<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Akariya</id>
	<title>Expertiza_Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Akariya"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Akariya"/>
	<updated>2026-08-11T18:17:38Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1992._Add_cake_type_to_rubrics_design&amp;diff=131123</id>
		<title>CSC/ECE 517 Fall 2019 - E1992. Add cake type to rubrics design</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1992._Add_cake_type_to_rubrics_design&amp;diff=131123"/>
		<updated>2019-12-07T07:36:19Z</updated>

		<summary type="html">&lt;p&gt;Akariya: /* Database Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction:==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source application running on Ruby on Rails. It is used for management of courses and the assignments for respective courses, by the faculties and the students. Students can form teams in expertiza to work on an assignment in a group. A student team can submit their work through multiple means such as file uploads and embedded links. Expertiza also consists of questionnaires which can be leveraged for many tasks one of them being peer evaluation of submissions. Students can also review their teammates, making use of the teammate review questionnaire, based on their contribution to the projects.&lt;br /&gt;
&lt;br /&gt;
==Problem Definition:==&lt;br /&gt;
&lt;br /&gt;
Expertiza rubrics are utilized to build questionnaires and these rubrics incorporate several kinds of items, including Criterion (dropdown + comment), Checkbox, MultipleChoice, and Scale.  When we use these questionnaires for reviews, for example the teammate review assessment we encounter a few problems. One “problem” with all of these types is that there is nothing to stop a reviewer (say some student) from assigning the maximum score to all the reviewees (student's teammates). This is indeed a problem for teammate assessment, when the faculty asks for what fraction of the work each teammate did.So an alternative is needed, let’s call it a “Cake” item type, that allows a reviewer to divide a “cake” in any way between the reviewees, but does not allow him/her to divvy up more than 100% of the cake.&lt;br /&gt;
&lt;br /&gt;
#When the reviewer submits a score that would bring the total assigned for this item to &amp;gt; 100%, the system needs to warn. &lt;br /&gt;
#Allow a reviewer to give him/herself a score&lt;br /&gt;
# Proposed design needs to be compatible with existing self reviews code and teammates reviews&lt;br /&gt;
# Should be extensible to other kind of reviews apart from teammate reviews as well&lt;br /&gt;
&lt;br /&gt;
==Proposed Solution:==&lt;br /&gt;
Proposed Solution:&lt;br /&gt;
&lt;br /&gt;
The issue asks us to have a Cake type for the question taking in a participant’s contribution, whenever s/he is reviewing the other teammates. We add in a new Question type ‘Cake’, which will be extended from the Scored Question model [cake &amp;lt; scored question &amp;lt; choice question &amp;lt; question]. We intend to keep the Cake type input in the form of the number of stars, on the lines of the existing code. &lt;br /&gt;
&lt;br /&gt;
Addressing self-reviews for Cake Type:&lt;br /&gt;
&lt;br /&gt;
The questionnaire for reviewing teammates includes the question asking the cake (contribution) factor. The point whether the distribution of the cake should include the reviewer himself, is addressed on the basis of the enabling of ‘Self-Review’. If enabled, we include the self contribution to sum it up to one unit (for instance, five stars.) If not, we exclude the reviewer.&lt;br /&gt;
&lt;br /&gt;
There are two ways to integrate the Cake type to the existing flow:&lt;br /&gt;
&lt;br /&gt;
*'''Solution A''': Self-review at team level as an instance of TeammateReviewResponseMap&lt;br /&gt;
&lt;br /&gt;
In the current system workflow, we found that the teammate reviews are taken as instances of TeammateReviewResponseMap. The questionnaire for reviewing teammates includes the question asking the cake (contribution) factor. Ideally, the cake should include the reviewer himself as well.&lt;br /&gt;
&lt;br /&gt;
Currently, whenever a participant is reviewing his teammates, s/he is displayed a page with his current teammates, and this page excludes the logged in user. We include the logged in user ID as well by removing this check, and let him submit his self-review with the same questionnaire as his other teammates have.&lt;br /&gt;
&lt;br /&gt;
The Teammate Review page would be displayed as:&lt;br /&gt;
&lt;br /&gt;
[[File:Oodd_copy.jpg]]&lt;br /&gt;
&lt;br /&gt;
Steps to reproduce the proposed workflow:&lt;br /&gt;
#Log in to expertiza to view the home page&lt;br /&gt;
#Login as an Instructor, and then impersonate a student or login as a Student&lt;br /&gt;
#Go to Assignments -&amp;gt; Your team&lt;br /&gt;
#You will see a list of your teammates, including self: Choose a member and click on ‘View’&lt;br /&gt;
#You can see the question for asking the contribution as a cake type&lt;br /&gt;
#There will be a text description next to it denoting what part of the cake is taken (what contribution factor of the work is used)&lt;br /&gt;
&lt;br /&gt;
*'''Solution B''': Self-review at team level as an instance of SelfReviewResponseMap&lt;br /&gt;
&lt;br /&gt;
Currently, we have self reviews in place at an assignment level. This means that a team can review their own work, similar to how they review their peers. We want to extend the self review functionality to not only review the project but to also review the student as a team member. &lt;br /&gt;
We can make use of the existing self review code and extend it to teammate reviews as well. &lt;br /&gt;
&lt;br /&gt;
In the current implementation, a student can perform a self review by going to a particular assignment and clicking on the “Your work” link. If self reviews are enabled for that assignment, then a button will show at the bottom of the page which says “Self review”. Clicking on the button will show a link “Begin”&lt;br /&gt;
&lt;br /&gt;
We want to add another link here, that says “self teammate review”. Such that clicking on the link will render the same questionnaire that is shown for the student to review other teammates.&lt;br /&gt;
&lt;br /&gt;
Steps to reproduce the proposed workflow:&lt;br /&gt;
#Log in to expertiza to view the home page&lt;br /&gt;
#Login as an Instructor, and then impersonate a student or login as a Student&lt;br /&gt;
#Go to Assignments -&amp;gt; Your work&lt;br /&gt;
#Click on self review button at the bottom of the page&lt;br /&gt;
#You will see a new “self teammate review” link here&lt;br /&gt;
#Clicking on the button will render the questionnaire &lt;br /&gt;
#You can see the question for asking the contribution as a cake type&lt;br /&gt;
#There will be a text description next to it denoting what part of the cake is taken (what contribution factor of the work is used)&lt;br /&gt;
&lt;br /&gt;
Final approach: We decide to go with the proposed Solution A (Self-review at team level as an instance of TeammateReviewResponseMap), since it ensures consistency in the flow, while taking teammate reviews and self-reviews.&lt;br /&gt;
&lt;br /&gt;
==Use Case Diagram==&lt;br /&gt;
[[File:UseCaseExpertizaCake.png|center]]&lt;br /&gt;
&lt;br /&gt;
==Files Modified in the Project==&lt;br /&gt;
&lt;br /&gt;
#Edit '''questionnaire/_questionnaire.html.erb''': Add Cake to the list question types&lt;br /&gt;
#Create '''cake.rb''' model that inherits from ScoredQuestion model. Add method to calculate currently added weights of the cake to this model.&lt;br /&gt;
#Edit '''questionnaires_controller.rb''', under “add_new_questions” method, adding a cake type and handle the changes. &lt;br /&gt;
#Edit '''assignments/edit/_review_strategy.html.erb''' and add ‘Allow teammate self-review’ to the list of options.&lt;br /&gt;
#Edit '''student_teams/view.html.erb''' and add reviewer to list of displayed teammates and mark that item as self review in the view.&lt;br /&gt;
#Edit '''response/response.html.erb''' and add cake type questions to the displayed response.&lt;br /&gt;
#Edit '''response/view.html.erb''' and add cake type questions to the displayed response.&lt;br /&gt;
&lt;br /&gt;
==Database Modification==&lt;br /&gt;
In order to implement the self review feature for teammate reviews we have added a column &amp;quot;is_self_teammate_review_enabled&amp;quot; to the assignments table. Below is the migration for the same: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; class SelfTeammateReview &amp;lt; ActiveRecord::Migration&lt;br /&gt;
  def change&lt;br /&gt;
	add_column :assignments, :is_self_teammate_review_enabled, :boolean, :default =&amp;gt; false&lt;br /&gt;
  end&lt;br /&gt;
end &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Database Design==&lt;br /&gt;
Below is the simplified version of the ER diagram which displays the relationships between the entity sets. &lt;br /&gt;
&lt;br /&gt;
[[File:ER diagram.png|center]]&lt;br /&gt;
&lt;br /&gt;
===Relevant Tables===&lt;br /&gt;
[[File:Database.png|center]]&lt;br /&gt;
&lt;br /&gt;
==Test Plan: ==&lt;br /&gt;
====Test Details:====&lt;br /&gt;
====UI Testing====&lt;br /&gt;
&lt;br /&gt;
*Reviewing teammates (happy case when contribution is &amp;lt; 100%)&lt;br /&gt;
#A student logs on to expertiza and clicks on an assignment &lt;br /&gt;
#Then he clicks on your team link&lt;br /&gt;
#He should be able to see his teammates under team members&lt;br /&gt;
#Click on review link for a fellow team member&lt;br /&gt;
#Fill the responses for the given questions (which include cake type questions as well) &lt;br /&gt;
#Save the review&lt;br /&gt;
&lt;br /&gt;
*Giving &amp;gt; 100% for cake questions &lt;br /&gt;
#A student logs on to expertiza and clicks on an assignment &lt;br /&gt;
#Then he clicks on your team link&lt;br /&gt;
#He should be able to see his teammates under team members&lt;br /&gt;
#While reviewing a teammate, a student gives 60% as contribution to teammate1 &lt;br /&gt;
#When he tries to give &amp;gt; 40% for the teammate2. He should see a warning that states that total of the cake is exceeding 100%&lt;br /&gt;
&lt;br /&gt;
*Context: Self reviews can be enabled/ disabled for an assignment as per the choice of the instructor. &lt;br /&gt;
#Self reviews enabled&lt;br /&gt;
#A student logs on to expertiza and clicks on an assignment &lt;br /&gt;
#Then he clicks on your team link&lt;br /&gt;
#He should be able to see his teammates and himself (for self review) under team members&lt;br /&gt;
#Total contribution for a cake type question in a teammate review should include the contribution provided by the student in the self review as well. &lt;br /&gt;
#If the contribution is exceeded, a warning should appear&lt;br /&gt;
&lt;br /&gt;
*Self review disabled&lt;br /&gt;
#The link for a reviewer to review himself as a team member should not show&lt;br /&gt;
#The cake type questions in the teammate review should include only contributions provided by the other team members&lt;br /&gt;
&lt;br /&gt;
*Context: If self review is enabled after the assignment has been created and a few students have already given reviews, then it should give a warning. &lt;br /&gt;
#Self review enabled in the middle of the assignment&lt;br /&gt;
#Add teammate review for teammate1&lt;br /&gt;
#Add teammate review for teammate2 (make sure it adds upto 100%)&lt;br /&gt;
#Enable self review as an instructor&lt;br /&gt;
#As a student, notice that a new review button is visible in the “your team” page. &lt;br /&gt;
#Click on review, try to add contribution for self and make sure a warning appears that says that the cake is already at 100%&lt;br /&gt;
&lt;br /&gt;
*Context: If self review is disabled after the assignment has been created and a few students have already given reviews.&lt;br /&gt;
#Self review disabled in the middle of the assignment &lt;br /&gt;
#Enable self review as an instructor&lt;br /&gt;
#Add teammate review for teammate1&lt;br /&gt;
#Add teammate review for teammate2 &lt;br /&gt;
#Add self review (make sure it adds upto 100%)&lt;br /&gt;
#Disable self review as an instructor&lt;br /&gt;
#As a student, notice that the review button is NOT visible in the “your team” page&lt;br /&gt;
&lt;br /&gt;
'''Open question''': what should the expected behavior be? Should we decrease the self review contribution? But this would reduce the total contribution &amp;lt; the desired 100%&lt;br /&gt;
&lt;br /&gt;
====Automated testing using Rspec==== &lt;br /&gt;
&lt;br /&gt;
Both Rspec and Capybara with Rspec tests have been written, with the capybara file - cake_questionnaire.rb added to spec/features folder, and rspec model file - cake_spec.rb added to the spec/models folder. &lt;br /&gt;
&lt;br /&gt;
The capybara test creates a new questionnaire by logging into expertiza as instructor6, and adds the cake type questions to the questionnaire. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Several other test cases such as successful login into expertiza, along with testing the two main scenarios (shown in the snippet above) had been tested. The question_type is a list of values which contain all types of questions, which includes the question type cake. The test cases pass, on creation of a review questionnaire and on creation of a questionnaire with different types of questions, including the cake type questions to the questionnaire rubric. &lt;br /&gt;
&lt;br /&gt;
The RSpec testing has been done on the cake.rb model, and has resulted in a decent code coverage of 82.73% and sample code can be seen in the snippet below: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With most of the code on the model is rendering html code, the correctness of the html code has been tested, to check if rspec also results in code that is expected. &lt;br /&gt;
To run and verify Rspec results, please do run the following commands from the expertiza folder: &lt;br /&gt;
&lt;br /&gt;
rspec spec/models/cake_spec.rb&lt;br /&gt;
rspec spec/features/cake_questionnaire.rb &lt;br /&gt;
&lt;br /&gt;
With the right gems installed, the test cases should ideally pass. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Team ==&lt;br /&gt;
&lt;br /&gt;
'''Mentor''': Carmen Bentley (cnaiken@ncsu.edu)&lt;br /&gt;
*Mita Gavade (magavade@ncsu.edu)&lt;br /&gt;
*Srujana Rachakonda (srachak@ncsu.edu)&lt;br /&gt;
*Ram Chavali (rlchaval@ncsu.edu)&lt;br /&gt;
*Abhirav Kariya (akariya@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Akariya</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Database.png&amp;diff=131122</id>
		<title>File:Database.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Database.png&amp;diff=131122"/>
		<updated>2019-12-07T07:35:31Z</updated>

		<summary type="html">&lt;p&gt;Akariya: uploaded a new version of &amp;amp;quot;File:Database.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Database Schema&lt;/div&gt;</summary>
		<author><name>Akariya</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1992._Add_cake_type_to_rubrics_designe_to_rubrics_design&amp;diff=128953</id>
		<title>CSC/ECE 517 Fall 2019 - E1992. Add cake type to rubrics designe to rubrics design</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1992._Add_cake_type_to_rubrics_designe_to_rubrics_design&amp;diff=128953"/>
		<updated>2019-11-12T02:08:24Z</updated>

		<summary type="html">&lt;p&gt;Akariya: Created page with &amp;quot;==Introduction:==  Expertiza is an open source application running on Ruby on Rails. It is used for management of courses and the assignments for respective courses, by the facul...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction:==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source application running on Ruby on Rails. It is used for management of courses and the assignments for respective courses, by the faculties and the students. The manage content section of the application has different views which displays information about the users, courses, assignments, questionnaires, and reviews. The application should have a fully functional search functionality throughout the views, so that a user can search any type of data with ease, on the basis of any number of parameters depending on his requirements. Users should be searched on the basis of one more parameters which include name, full name, email, etc. Similarly, assignments should be searched on the basis of name, created date, updated date, etc. However, the search functionality in the existing application is constrained to just a single parameter for users and assignments. Questionnaires management does not have a search functionality implemented as yet. This project works on improving the search functionality of Expertiza, by adding search bars if not present, introducing advanced search feature where user can search on the basis of more than one parameters and making the search functionality appear more elegant.&lt;br /&gt;
&lt;br /&gt;
==Problem Definition:==&lt;br /&gt;
&lt;br /&gt;
#An instructor or administrator can search for a user by name, user-ID, or other characteristics.&lt;br /&gt;
#An instructor should be able to search for assignments by name, due date, or other characteristics.&lt;br /&gt;
#An instructor should be able to search for rubrics (or other questionnaires) by name, or by the courses or assignments they have been used in.&lt;br /&gt;
##For the instructor, there also needs to be a way to quickly find rubrics (and other questionnaires) that have been used in a single course.  It should be possible to search or click somewhere to bring up a list of questionnaires used in the course, expanding only the applicable questionnaires in the list of questionnaires.&lt;br /&gt;
##One should also be able to search for questionnaires by words used in questions that belong to the questionnaires.&lt;br /&gt;
#There should be a way to search all reviews of a particular team’s work for particular scores or text strings. Reviews should be able to be filtered by score, text comment length, reviewer and reviewee.&lt;br /&gt;
#An instructor or administrator should be able to search for all the assignments that a particular user has participated in.&lt;br /&gt;
#If more than one criteria needs to be specified, there should be an 'Advanced Search' button.&lt;br /&gt;
&lt;br /&gt;
==Proposed Solution:==&lt;br /&gt;
Proposed Solution:&lt;br /&gt;
&lt;br /&gt;
The issue asks us to have a Cake type for the question taking in a participant’s contribution, whenever s/he is reviewing the other teammates. We add in a new Question type ‘Cake’, which will be extended from the Scored Question model [cake &amp;lt; scored question &amp;lt; choice question &amp;lt; question]. We intend to keep the Cake type input in the form of the number of stars, on the lines of the existing code. &lt;br /&gt;
&lt;br /&gt;
Addressing self-reviews for Cake Type:&lt;br /&gt;
&lt;br /&gt;
The questionnaire for reviewing teammates includes the question asking the cake (contribution) factor. The point whether the distribution of the cake should include the reviewer himself, is addressed on the basis of the enabling of ‘Self-Review’. If enabled, we include the self contribution to sum it up to one unit (for instance, five stars.) If not, we exclude the reviewer.&lt;br /&gt;
&lt;br /&gt;
There are two ways to integrate the Cake type to the existing flow:&lt;br /&gt;
&lt;br /&gt;
*'''Solution A''': Self-review at team level as an instance of TeammateReviewResponseMap&lt;br /&gt;
&lt;br /&gt;
In the current system workflow, we found that the teammate reviews are taken as instances of TeammateReviewResponseMap. The questionnaire for reviewing teammates includes the question asking the cake (contribution) factor. Ideally, the cake should include the reviewer himself as well.&lt;br /&gt;
&lt;br /&gt;
Currently, whenever a participant is reviewing his teammates, s/he is displayed a page with his current teammates, and this page excludes the logged in user. We include the logged in user ID as well by removing this check, and let him submit his self-review with the same questionnaire as his other teammates have.&lt;br /&gt;
&lt;br /&gt;
The Teammate Review page would be displayed as:&lt;br /&gt;
&lt;br /&gt;
[[File:TRP.png|1000px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Steps to reproduce the proposed workflow:&lt;br /&gt;
#Log in to expertiza to view the home page&lt;br /&gt;
#Login as an Instructor, and then impersonate a student or login as a Student&lt;br /&gt;
#Go to Assignments -&amp;gt; Your team&lt;br /&gt;
#You will see a list of your teammates, including self: Choose a member and click on ‘View’&lt;br /&gt;
#You can see the question for asking the contribution as a cake type&lt;br /&gt;
#There will be a text description next to it denoting what part of the cake is taken (what contribution factor of the work is used)&lt;br /&gt;
&lt;br /&gt;
*'''Solution B''': Self-review at team level as an instance of SelfReviewResponseMap&lt;br /&gt;
&lt;br /&gt;
Currently, we have self reviews in place at an assignment level. This means that a team can review their own work, similar to how they review their peers. We want to extend the self review functionality to not only review the project but to also review the student as a team member. &lt;br /&gt;
We can make use of the existing self review code and extend it to teammate reviews as well. &lt;br /&gt;
&lt;br /&gt;
In the current implementation, a student can perform a self review by going to a particular assignment and clicking on the “Your work” link. If self reviews are enabled for that assignment, then a button will show at the bottom of the page which says “Self review”. Clicking on the button will show a link “Begin”&lt;br /&gt;
&lt;br /&gt;
We want to add another link here, that says “self teammate review”. Such that clicking on the link will render the same questionnaire that is shown for the student to review other teammates.&lt;br /&gt;
&lt;br /&gt;
Steps to reproduce the proposed workflow:&lt;br /&gt;
#Log in to expertiza to view the home page&lt;br /&gt;
#Login as an Instructor, and then impersonate a student or login as a Student&lt;br /&gt;
#Go to Assignments -&amp;gt; Your work&lt;br /&gt;
#Click on self review button at the bottom of the page&lt;br /&gt;
#You will see a new “self teammate review” link here&lt;br /&gt;
#Clicking on the button will render the questionnaire &lt;br /&gt;
#You can see the question for asking the contribution as a cake type&lt;br /&gt;
#There will be a text description next to it denoting what part of the cake is taken (what contribution factor of the work is used)&lt;br /&gt;
&lt;br /&gt;
Final approach: We decide to go with the proposed Solution A (Self-review at team level as an instance of TeammateReviewResponseMap), since it ensures consistency in the flow, while taking teammate reviews and self-reviews.&lt;br /&gt;
&lt;br /&gt;
==Use Case Diagram==&lt;br /&gt;
[[File:UseCaseExpertizaCake.png|center]]&lt;br /&gt;
&lt;br /&gt;
==Proposed Code Changes==&lt;br /&gt;
&lt;br /&gt;
#Edit '''questionnaire/_questionnaire.html.erb''': Add Cake to the list question types&lt;br /&gt;
#Create '''cake.rb''' model that inherits from ScoredQuestion model. Add method to calculate currently added weights of the cake to this model.&lt;br /&gt;
#Edit '''questionnaires_controller.rb''', under “add_new_questions” method, adding a cake type and handle the changes. &lt;br /&gt;
#Edit '''assignments/edit/_review_strategy.html.erb''' and add ‘Allow teammate self-review’ to the list of options.&lt;br /&gt;
#Edit '''student_teams/view.html.erb''' and add reviewer to list of displayed teammates and mark that item as self review in the view.&lt;br /&gt;
#Edit '''response/response.html.erb''' and add cake type questions to the displayed response.&lt;br /&gt;
#Edit '''response/view.html.erb''' and add cake type questions to the displayed response.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Database Design==&lt;br /&gt;
Below is the simplified version of the ER diagram which displays the relationships between the entity sets. &lt;br /&gt;
&lt;br /&gt;
[[File:ER diagram.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Relevant Tables===&lt;br /&gt;
[[File:ER2.png|center]]&lt;br /&gt;
&lt;br /&gt;
==Test Plan: ==&lt;br /&gt;
====Test Details:====&lt;br /&gt;
====UI Testing====&lt;br /&gt;
&lt;br /&gt;
*Reviewing teammates (happy case when contribution is &amp;lt; 100%)&lt;br /&gt;
#A student logs on to expertiza and clicks on an assignment &lt;br /&gt;
#Then he clicks on your team link&lt;br /&gt;
#He should be able to see his teammates under team members&lt;br /&gt;
#Click on review link for a fellow team member&lt;br /&gt;
#Fill the responses for the given questions (which include cake type questions as well) &lt;br /&gt;
#Save the review&lt;br /&gt;
&lt;br /&gt;
*Giving &amp;gt; 100% for cake questions &lt;br /&gt;
#A student logs on to expertiza and clicks on an assignment &lt;br /&gt;
#Then he clicks on your team link&lt;br /&gt;
#He should be able to see his teammates under team members&lt;br /&gt;
#While reviewing a teammate, a student gives 60% as contribution to teammate1 &lt;br /&gt;
#When he tries to give &amp;gt; 40% for the teammate2. He should see a warning that states that total of the cake is exceeding 100%&lt;br /&gt;
&lt;br /&gt;
*Context: Self reviews can be enabled/ disabled for an assignment as per the choice of the instructor. &lt;br /&gt;
#Self reviews enabled&lt;br /&gt;
#A student logs on to expertiza and clicks on an assignment &lt;br /&gt;
#Then he clicks on your team link&lt;br /&gt;
#He should be able to see his teammates and himself (for self review) under team members&lt;br /&gt;
#Total contribution for a cake type question in a teammate review should include the contribution provided by the student in the self review as well. &lt;br /&gt;
#If the contribution is exceeded, a warning should appear&lt;br /&gt;
&lt;br /&gt;
*Self review disabled&lt;br /&gt;
#The link for a reviewer to review himself as a team member should not show&lt;br /&gt;
#The cake type questions in the teammate review should include only contributions provided by the other team members&lt;br /&gt;
&lt;br /&gt;
*Context: If self review is enabled after the assignment has been created and a few students have already given reviews, then it should give a warning. &lt;br /&gt;
#Self review enabled in the middle of the assignment&lt;br /&gt;
#Add teammate review for teammate1&lt;br /&gt;
#Add teammate review for teammate2 (make sure it adds upto 100%)&lt;br /&gt;
#Enable self review as an instructor&lt;br /&gt;
#As a student, notice that a new review button is visible in the “your team” page. &lt;br /&gt;
#Click on review, try to add contribution for self and make sure a warning appears that says that the cake is already at 100%&lt;br /&gt;
&lt;br /&gt;
*Context: If self review is disabled after the assignment has been created and a few students have already given reviews.&lt;br /&gt;
#Self review disabled in the middle of the assignment &lt;br /&gt;
#Enable self review as an instructor&lt;br /&gt;
#Add teammate review for teammate1&lt;br /&gt;
#Add teammate review for teammate2 &lt;br /&gt;
#Add self review (make sure it adds upto 100%)&lt;br /&gt;
#Disable self review as an instructor&lt;br /&gt;
#As a student, notice that the review button is NOT visible in the “your team” page&lt;br /&gt;
&lt;br /&gt;
'''Open question''': what should the expected behavior be? Should we decrease the self review contribution? But this would reduce the total contribution &amp;lt; the desired 100%&lt;br /&gt;
&lt;br /&gt;
Automated testing using Rspec: &lt;br /&gt;
*We will be adding unit / integration tests to all the files we modify.&lt;br /&gt;
&lt;br /&gt;
==Team ==&lt;br /&gt;
&lt;br /&gt;
'''Mentor''': Carmen Bentley (cnaiken@ncsu.edu)&lt;br /&gt;
*Mita Gavade (magavade@ncsu.edu)&lt;br /&gt;
*Srujana Rachakonda (srachak@ncsu.edu)&lt;br /&gt;
*Ram Chavali (rlchaval@ncsu.edu)&lt;br /&gt;
*Abhirav Kariya (akariya@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Akariya</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1992._Add_cake_type_to_rubrics_design&amp;diff=128944</id>
		<title>CSC/ECE 517 Fall 2019 - E1992. Add cake type to rubrics design</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1992._Add_cake_type_to_rubrics_design&amp;diff=128944"/>
		<updated>2019-11-12T02:03:34Z</updated>

		<summary type="html">&lt;p&gt;Akariya: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction:==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source application running on Ruby on Rails. It is used for management of courses and the assignments for respective courses, by the faculties and the students. The manage content section of the application has different views which displays information about the users, courses, assignments, questionnaires, and reviews. The application should have a fully functional search functionality throughout the views, so that a user can search any type of data with ease, on the basis of any number of parameters depending on his requirements. Users should be searched on the basis of one more parameters which include name, full name, email, etc. Similarly, assignments should be searched on the basis of name, created date, updated date, etc. However, the search functionality in the existing application is constrained to just a single parameter for users and assignments. Questionnaires management does not have a search functionality implemented as yet. This project works on improving the search functionality of Expertiza, by adding search bars if not present, introducing advanced search feature where user can search on the basis of more than one parameters and making the search functionality appear more elegant.&lt;br /&gt;
&lt;br /&gt;
==Problem Definition:==&lt;br /&gt;
&lt;br /&gt;
#An instructor or administrator can search for a user by name, user-ID, or other characteristics.&lt;br /&gt;
#An instructor should be able to search for assignments by name, due date, or other characteristics.&lt;br /&gt;
#An instructor should be able to search for rubrics (or other questionnaires) by name, or by the courses or assignments they have been used in.&lt;br /&gt;
##For the instructor, there also needs to be a way to quickly find rubrics (and other questionnaires) that have been used in a single course.  It should be possible to search or click somewhere to bring up a list of questionnaires used in the course, expanding only the applicable questionnaires in the list of questionnaires.&lt;br /&gt;
##One should also be able to search for questionnaires by words used in questions that belong to the questionnaires.&lt;br /&gt;
#There should be a way to search all reviews of a particular team’s work for particular scores or text strings.  Reviews should be able to be filtered by score, text comment length, reviewer and reviewee.&lt;br /&gt;
#An instructor or administrator should be able to search for all the assignments that a particular user has participated in.&lt;br /&gt;
#If more than one criteria needs to be specified, there should be an 'Advanced Search' button.&lt;br /&gt;
&lt;br /&gt;
==Proposed Solution:==&lt;br /&gt;
Proposed Solution:&lt;br /&gt;
&lt;br /&gt;
The issue asks us to have a Cake type for the question taking in a participant’s contribution, whenever s/he is reviewing the other teammates. We add in a new Question type ‘Cake’, which will be extended from the Scored Question model [cake &amp;lt; scored question &amp;lt; choice question &amp;lt; question]. We intend to keep the Cake type input in the form of the number of stars, on the lines of the existing code. &lt;br /&gt;
&lt;br /&gt;
Addressing self-reviews for Cake Type:&lt;br /&gt;
&lt;br /&gt;
The questionnaire for reviewing teammates includes the question asking the cake (contribution) factor. The point whether the distribution of the cake should include the reviewer himself, is addressed on the basis of the enabling of ‘Self-Review’. If enabled, we include the self contribution to sum it up to one unit (for instance, five stars.) If not, we exclude the reviewer.&lt;br /&gt;
&lt;br /&gt;
There are two ways to integrate the Cake type to the existing flow:&lt;br /&gt;
&lt;br /&gt;
*'''Solution A''': Self-review at team level as an instance of TeammateReviewResponseMap&lt;br /&gt;
&lt;br /&gt;
In the current system workflow, we found that the teammate reviews are taken as instances of TeammateReviewResponseMap. The questionnaire for reviewing teammates includes the question asking the cake (contribution) factor. Ideally, the cake should include the reviewer himself as well.&lt;br /&gt;
&lt;br /&gt;
Currently, whenever a participant is reviewing his teammates, s/he is displayed a page with his current teammates, and this page excludes the logged in user. We include the logged in user ID as well by removing this check, and let him submit his self-review with the same questionnaire as his other teammates have.&lt;br /&gt;
&lt;br /&gt;
The Teammate Review page would be displayed as:&lt;br /&gt;
&lt;br /&gt;
[[File:TRP.png|1000px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Steps to reproduce the proposed workflow:&lt;br /&gt;
#Log in to expertiza to view the home page&lt;br /&gt;
#Login as an Instructor, and then impersonate a student or login as a Student&lt;br /&gt;
#Go to Assignments -&amp;gt; Your team&lt;br /&gt;
#You will see a list of your teammates, including self: Choose a member and click on ‘View’&lt;br /&gt;
#You can see the question for asking the contribution as a cake type&lt;br /&gt;
#There will be a text description next to it denoting what part of the cake is taken (what contribution factor of the work is used)&lt;br /&gt;
&lt;br /&gt;
*'''Solution B''': Self-review at team level as an instance of SelfReviewResponseMap&lt;br /&gt;
&lt;br /&gt;
Currently, we have self reviews in place at an assignment level. This means that a team can review their own work, similar to how they review their peers. We want to extend the self review functionality to not only review the project but to also review the student as a team member. &lt;br /&gt;
We can make use of the existing self review code and extend it to teammate reviews as well. &lt;br /&gt;
&lt;br /&gt;
In the current implementation, a student can perform a self review by going to a particular assignment and clicking on the “Your work” link. If self reviews are enabled for that assignment, then a button will show at the bottom of the page which says “Self review”. Clicking on the button will show a link “Begin”&lt;br /&gt;
&lt;br /&gt;
We want to add another link here, that says “self teammate review”. Such that clicking on the link will render the same questionnaire that is shown for the student to review other teammates.&lt;br /&gt;
&lt;br /&gt;
Steps to reproduce the proposed workflow:&lt;br /&gt;
#Log in to expertiza to view the home page&lt;br /&gt;
#Login as an Instructor, and then impersonate a student or login as a Student&lt;br /&gt;
#Go to Assignments -&amp;gt; Your work&lt;br /&gt;
#Click on self review button at the bottom of the page&lt;br /&gt;
#You will see a new “self teammate review” link here&lt;br /&gt;
#Clicking on the button will render the questionnaire &lt;br /&gt;
#You can see the question for asking the contribution as a cake type&lt;br /&gt;
#There will be a text description next to it denoting what part of the cake is taken (what contribution factor of the work is used)&lt;br /&gt;
&lt;br /&gt;
Final approach: We decide to go with the proposed Solution A (Self-review at team level as an instance of TeammateReviewResponseMap), since it ensures consistency in the flow, while taking teammate reviews and self-reviews.&lt;br /&gt;
&lt;br /&gt;
==Use Case Diagram==&lt;br /&gt;
[[File:UseCaseExpertizaCake.png|center]]&lt;br /&gt;
&lt;br /&gt;
==Proposed Code Changes==&lt;br /&gt;
&lt;br /&gt;
#Edit '''questionnaire/_questionnaire.html.erb''': Add Cake to the list question types&lt;br /&gt;
#Create '''cake.rb''' model that inherits from ScoredQuestion model. Add method to calculate currently added weights of the cake to this model.&lt;br /&gt;
#Edit '''questionnaires_controller.rb''', under “add_new_questions” method, adding a cake type and handle the changes. &lt;br /&gt;
#Edit '''assignments/edit/_review_strategy.html.erb''' and add ‘Allow teammate self-review’ to the list of options.&lt;br /&gt;
#Edit '''student_teams/view.html.erb''' and add reviewer to list of displayed teammates and mark that item as self review in the view.&lt;br /&gt;
#Edit '''response/response.html.erb''' and add cake type questions to the displayed response.&lt;br /&gt;
#Edit '''response/view.html.erb''' and add cake type questions to the displayed response.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Database Design==&lt;br /&gt;
Below is the simplified version of the ER diagram which displays the relationships between the entity sets. &lt;br /&gt;
&lt;br /&gt;
[[File:ER diagram.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Relevant Tables===&lt;br /&gt;
[[File:ER2.png|center]]&lt;br /&gt;
&lt;br /&gt;
==Test Plan: ==&lt;br /&gt;
====Test Details:====&lt;br /&gt;
====UI Testing====&lt;br /&gt;
&lt;br /&gt;
*Reviewing teammates (happy case when contribution is &amp;lt; 100%)&lt;br /&gt;
#A student logs on to expertiza and clicks on an assignment &lt;br /&gt;
#Then he clicks on your team link&lt;br /&gt;
#He should be able to see his teammates under team members&lt;br /&gt;
#Click on review link for a fellow team member&lt;br /&gt;
#Fill the responses for the given questions (which include cake type questions as well) &lt;br /&gt;
#Save the review&lt;br /&gt;
&lt;br /&gt;
*Giving &amp;gt; 100% for cake questions &lt;br /&gt;
#A student logs on to expertiza and clicks on an assignment &lt;br /&gt;
#Then he clicks on your team link&lt;br /&gt;
#He should be able to see his teammates under team members&lt;br /&gt;
#While reviewing a teammate, a student gives 60% as contribution to teammate1 &lt;br /&gt;
#When he tries to give &amp;gt; 40% for the teammate2. He should see a warning that states that total of the cake is exceeding 100%&lt;br /&gt;
&lt;br /&gt;
*Context: Self reviews can be enabled/ disabled for an assignment as per the choice of the instructor. &lt;br /&gt;
#Self reviews enabled&lt;br /&gt;
#A student logs on to expertiza and clicks on an assignment &lt;br /&gt;
#Then he clicks on your team link&lt;br /&gt;
#He should be able to see his teammates and himself (for self review) under team members&lt;br /&gt;
#Total contribution for a cake type question in a teammate review should include the contribution provided by the student in the self review as well. &lt;br /&gt;
#If the contribution is exceeded, a warning should appear&lt;br /&gt;
&lt;br /&gt;
*Self review disabled&lt;br /&gt;
#The link for a reviewer to review himself as a team member should not show&lt;br /&gt;
#The cake type questions in the teammate review should include only contributions provided by the other team members&lt;br /&gt;
&lt;br /&gt;
*Context: If self review is enabled after the assignment has been created and a few students have already given reviews, then it should give a warning. &lt;br /&gt;
#Self review enabled in the middle of the assignment&lt;br /&gt;
#Add teammate review for teammate1&lt;br /&gt;
#Add teammate review for teammate2 (make sure it adds upto 100%)&lt;br /&gt;
#Enable self review as an instructor&lt;br /&gt;
#As a student, notice that a new review button is visible in the “your team” page. &lt;br /&gt;
#Click on review, try to add contribution for self and make sure a warning appears that says that the cake is already at 100%&lt;br /&gt;
&lt;br /&gt;
*Context: If self review is disabled after the assignment has been created and a few students have already given reviews.&lt;br /&gt;
#Self review disabled in the middle of the assignment &lt;br /&gt;
#Enable self review as an instructor&lt;br /&gt;
#Add teammate review for teammate1&lt;br /&gt;
#Add teammate review for teammate2 &lt;br /&gt;
#Add self review (make sure it adds upto 100%)&lt;br /&gt;
#Disable self review as an instructor&lt;br /&gt;
#As a student, notice that the review button is NOT visible in the “your team” page&lt;br /&gt;
&lt;br /&gt;
'''Open question''': what should the expected behavior be? Should we decrease the self review contribution? But this would reduce the total contribution &amp;lt; the desired 100%&lt;br /&gt;
&lt;br /&gt;
Automated testing using Rspec: &lt;br /&gt;
*We will be adding unit / integration tests to all the files we modify.&lt;br /&gt;
&lt;br /&gt;
==Team ==&lt;br /&gt;
&lt;br /&gt;
'''Mentor''': Carmen Bentley (cnaiken@ncsu.edu)&lt;br /&gt;
*Mita Gavade (magavade@ncsu.edu)&lt;br /&gt;
*Srujana Rachakonda (srachak@ncsu.edu)&lt;br /&gt;
*Ram Chavali (rlchaval@ncsu.edu)&lt;br /&gt;
*Abhirav Kariya (akariya@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Akariya</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1992._Add_cake_type_to_rubrics_design&amp;diff=128943</id>
		<title>CSC/ECE 517 Fall 2019 - E1992. Add cake type to rubrics design</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1992._Add_cake_type_to_rubrics_design&amp;diff=128943"/>
		<updated>2019-11-12T02:03:13Z</updated>

		<summary type="html">&lt;p&gt;Akariya: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction:==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source application running on Ruby on Rails. It is used for management of courses and the assignments for respective courses, by the faculties and the students. The manage content section of the application has different views which displays information about the users, courses, assignments, questionnaires, and reviews. The application should have a fully functional search functionality throughout the views, so that a user can search any type of data with ease, on the basis of any number of parameters depending on his requirements. Users should be searched on the basis of one more parameters which include name, full name, email, etc. Similarly, assignments should be searched on the basis of name, created date, updated date, etc. However, the search functionality in the existing application is constrained to just a single parameter for users and assignments. Questionnaires management does not have a search functionality implemented as yet. This project works on improving the search functionality of Expertiza, by adding search bars if not present, introducing advanced search feature where user can search on the basis of more than one parameters and making the search functionality appear more elegant.&lt;br /&gt;
&lt;br /&gt;
==Problem Definition:==&lt;br /&gt;
&lt;br /&gt;
#An instructor or administrator can search for a user by name, user-ID, or other characteristics.&lt;br /&gt;
#An instructor should be able to search for assignments by name, due date, or other characteristics.&lt;br /&gt;
#An instructor should be able to search for rubrics (or other questionnaires) by name, or by the courses or assignments they have been used in.&lt;br /&gt;
##For the instructor, there also needs to be a way to quickly find rubrics (and other questionnaires) that have been used in a single course.  It should be possible to search or click somewhere to bring up a list of questionnaires used in the course, expanding only the applicable questionnaires in the list of questionnaires.&lt;br /&gt;
##One should also be able to search for questionnaires by words used in questions that belong to the questionnaires.&lt;br /&gt;
#There should be a way to search all reviews of a particular team’s work for particular scores or text strings.  Reviews should be able to be filtered by score, text comment length, reviewer and reviewee.&lt;br /&gt;
#An instructor or administrator should be able to search for all the assignments that a particular user has participated in.&lt;br /&gt;
#If more than one criteria needs to be specified, there should be an 'Advanced Search' button.&lt;br /&gt;
&lt;br /&gt;
==Proposed Solution:==&lt;br /&gt;
Proposed Solution:&lt;br /&gt;
&lt;br /&gt;
The issue asks us to have a Cake type for the question taking in a participant’s contribution, whenever s/he is reviewing the other teammates. We add in a new Question type ‘Cake’, which will be extended from the Scored Question model [cake &amp;lt; scored question &amp;lt; choice question &amp;lt; question]. We intend to keep the Cake type input in the form of the number of stars, on the lines of the existing code. &lt;br /&gt;
&lt;br /&gt;
Addressing self-reviews for Cake Type:&lt;br /&gt;
&lt;br /&gt;
The questionnaire for reviewing teammates includes the question asking the cake (contribution) factor. The point whether the distribution of the cake should include the reviewer himself, is addressed on the basis of the enabling of ‘Self-Review’. If enabled, we include the self contribution to sum it up to one unit (for instance, five stars.) If not, we exclude the reviewer.&lt;br /&gt;
&lt;br /&gt;
There are two ways to integrate the Cake type to the existing flow:&lt;br /&gt;
&lt;br /&gt;
*'''Solution A''': Self-review at team level as an instance of TeammateReviewResponseMap&lt;br /&gt;
&lt;br /&gt;
In the current system workflow, we found that the teammate reviews are taken as instances of TeammateReviewResponseMap. The questionnaire for reviewing teammates includes the question asking the cake (contribution) factor. Ideally, the cake should include the reviewer himself as well.&lt;br /&gt;
&lt;br /&gt;
Currently, whenever a participant is reviewing his teammates, s/he is displayed a page with his current teammates, and this page excludes the logged in user. We include the logged in user ID as well by removing this check, and let him submit his self-review with the same questionnaire as his other teammates have.&lt;br /&gt;
&lt;br /&gt;
The Teammate Review page would be displayed as:&lt;br /&gt;
&lt;br /&gt;
[[File:TRP.png|1000px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Steps to reproduce the proposed workflow:&lt;br /&gt;
#Log in to expertiza to view the home page&lt;br /&gt;
#Login as an Instructor, and then impersonate a student or login as a Student&lt;br /&gt;
#Go to Assignments -&amp;gt; Your team&lt;br /&gt;
#You will see a list of your teammates, including self: Choose a member and click on ‘View’&lt;br /&gt;
#You can see the question for asking the contribution as a cake type&lt;br /&gt;
#There will be a text description next to it denoting what part of the cake is taken (what contribution factor of the work is used)&lt;br /&gt;
&lt;br /&gt;
*'''Solution B''': Self-review at team level as an instance of SelfReviewResponseMap&lt;br /&gt;
&lt;br /&gt;
Currently, we have self reviews in place at an assignment level. This means that a team can review their own work, similar to how they review their peers. We want to extend the self review functionality to not only review the project but to also review the student as a team member. &lt;br /&gt;
We can make use of the existing self review code and extend it to teammate reviews as well. &lt;br /&gt;
&lt;br /&gt;
In the current implementation, a student can perform a self review by going to a particular assignment and clicking on the “Your work” link. If self reviews are enabled for that assignment, then a button will show at the bottom of the page which says “Self review”. Clicking on the button will show a link “Begin”&lt;br /&gt;
&lt;br /&gt;
We want to add another link here, that says “self teammate review”. Such that clicking on the link will render the same questionnaire that is shown for the student to review other teammates.&lt;br /&gt;
&lt;br /&gt;
Steps to reproduce the proposed workflow:&lt;br /&gt;
#Log in to expertiza to view the home page&lt;br /&gt;
#Login as an Instructor, and then impersonate a student or login as a Student&lt;br /&gt;
#Go to Assignments -&amp;gt; Your work&lt;br /&gt;
#Click on self review button at the bottom of the page&lt;br /&gt;
#You will see a new “self teammate review” link here&lt;br /&gt;
#Clicking on the button will render the questionnaire &lt;br /&gt;
#You can see the question for asking the contribution as a cake type&lt;br /&gt;
#There will be a text description next to it denoting what part of the cake is taken (what contribution factor of the work is used)&lt;br /&gt;
&lt;br /&gt;
Final approach: We decide to go with the proposed Solution A (Self-review at team level as an instance of TeammateReviewResponseMap), since it ensures consistency in the flow, while taking teammate reviews and self-reviews.&lt;br /&gt;
&lt;br /&gt;
==Use Case Diagram==&lt;br /&gt;
[[File:UseCaseExpertizaCake.png|center]]&lt;br /&gt;
&lt;br /&gt;
==Proposed Code Changes==&lt;br /&gt;
&lt;br /&gt;
#Edit '''questionnaire/_questionnaire.html.erb''': Add Cake to the list question types&lt;br /&gt;
#Create '''cake.rb''' model that inherits from ScoredQuestion model. Add method to calculate currently added weights of the cake to this model.&lt;br /&gt;
#Edit '''questionnaires_controller.rb''', under “add_new_questions” method, adding a cake type and handle the changes. &lt;br /&gt;
#Edit '''assignments/edit/_review_strategy.html.erb''' and add ‘Allow teammate self-review’ to the list of options.&lt;br /&gt;
#Edit '''student_teams/view.html.erb''' and add reviewer to list of displayed teammates and mark that item as self review in the view.&lt;br /&gt;
#Edit '''response/response.html.erb''' and add cake type questions to the displayed response.&lt;br /&gt;
#Edit '''response/view.html.erb''' and add cake type questions to the displayed response.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Database Design==&lt;br /&gt;
Below is the simplified version of the ER diagram which displays the relationships between the entity sets. &lt;br /&gt;
&lt;br /&gt;
[[File:ER diagram.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Relevant Tables===&lt;br /&gt;
[[File:ER2.png|center]]&lt;br /&gt;
&lt;br /&gt;
==Test Plan: ==&lt;br /&gt;
====Test Details:====&lt;br /&gt;
====UI Testing====&lt;br /&gt;
&lt;br /&gt;
*Reviewing teammates (happy case when contribution is &amp;lt; 100%)&lt;br /&gt;
#A student logs on to expertiza and clicks on an assignment &lt;br /&gt;
#Then he clicks on your team link&lt;br /&gt;
#He should be able to see his teammates under team members&lt;br /&gt;
#Click on review link for a fellow team member&lt;br /&gt;
#Fill the responses for the given questions (which include cake type questions as well) &lt;br /&gt;
#Save the review&lt;br /&gt;
&lt;br /&gt;
*Giving &amp;gt; 100% for cake questions &lt;br /&gt;
#A student logs on to expertiza and clicks on an assignment &lt;br /&gt;
#Then he clicks on your team link&lt;br /&gt;
#He should be able to see his teammates under team members&lt;br /&gt;
#While reviewing a teammate, a student gives 60% as contribution to teammate1 &lt;br /&gt;
#When he tries to give &amp;gt; 40% for the teammate2. He should see a warning that states that total of the cake is exceeding 100%&lt;br /&gt;
&lt;br /&gt;
*Context: Self reviews can be enabled/ disabled for an assignment as per the choice of the instructor. &lt;br /&gt;
#Self reviews enabled&lt;br /&gt;
#A student logs on to expertiza and clicks on an assignment &lt;br /&gt;
#Then he clicks on your team link&lt;br /&gt;
#He should be able to see his teammates and himself (for self review) under team members&lt;br /&gt;
#Total contribution for a cake type question in a teammate review should include the contribution provided by the student in the self review as well. &lt;br /&gt;
#If the contribution is exceeded, a warning should appear&lt;br /&gt;
&lt;br /&gt;
*Self review disabled&lt;br /&gt;
#The link for a reviewer to review himself as a team member should not show&lt;br /&gt;
#The cake type questions in the teammate review should include only contributions provided by the other team members&lt;br /&gt;
&lt;br /&gt;
*Context: If self review is enabled after the assignment has been created and a few students have already given reviews, then it should give a warning. &lt;br /&gt;
#Self review enabled in the middle of the assignment&lt;br /&gt;
#Add teammate review for teammate1&lt;br /&gt;
#Add teammate review for teammate2 (make sure it adds upto 100%)&lt;br /&gt;
#Enable self review as an instructor&lt;br /&gt;
#As a student, notice that a new review button is visible in the “your team” page. &lt;br /&gt;
#Click on review, try to add contribution for self and make sure a warning appears that says that the cake is already at 100%&lt;br /&gt;
&lt;br /&gt;
*Context: If self review is disabled after the assignment has been created and a few students have already given reviews.&lt;br /&gt;
#Self review disabled in the middle of the assignment &lt;br /&gt;
#Enable self review as an instructor&lt;br /&gt;
#Add teammate review for teammate1&lt;br /&gt;
#Add teammate review for teammate2 &lt;br /&gt;
#Add self review (make sure it adds upto 100%)&lt;br /&gt;
#Disable self review as an instructor&lt;br /&gt;
#As a student, notice that the review button is NOT visible in the “your team” page&lt;br /&gt;
&lt;br /&gt;
'''Open question''': what should the expected behavior be? Should we decrease the self review contribution? But this would reduce the total contribution &amp;lt; the desired 100%&lt;br /&gt;
&lt;br /&gt;
Automated testing using Rspec: &lt;br /&gt;
*We will be adding unit / integration tests to all the files we modify.&lt;br /&gt;
&lt;br /&gt;
==Team ==&lt;br /&gt;
&lt;br /&gt;
'''Mentor''': Carmen Bentley (cnaiken@ncsu.edu)&lt;br /&gt;
Mita Gavade (magavade@ncsu.edu)&lt;br /&gt;
Srujana Rachakonda (srachak@ncsu.edu)&lt;br /&gt;
Ram Chavali (rlchaval@ncsu.edu)&lt;br /&gt;
Abhirav Kariya (akariya@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Akariya</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1992._Add_cake_type_to_rubrics_design&amp;diff=128939</id>
		<title>CSC/ECE 517 Fall 2019 - E1992. Add cake type to rubrics design</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1992._Add_cake_type_to_rubrics_design&amp;diff=128939"/>
		<updated>2019-11-12T01:58:44Z</updated>

		<summary type="html">&lt;p&gt;Akariya: /* Proposed Solution: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction:==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source application running on Ruby on Rails. It is used for management of courses and the assignments for respective courses, by the faculties and the students. The manage content section of the application has different views which displays information about the users, courses, assignments, questionnaires, and reviews. The application should have a fully functional search functionality throughout the views, so that a user can search any type of data with ease, on the basis of any number of parameters depending on his requirements. Users should be searched on the basis of one more parameters which include name, full name, email, etc. Similarly, assignments should be searched on the basis of name, created date, updated date, etc. However, the search functionality in the existing application is constrained to just a single parameter for users and assignments. Questionnaires management does not have a search functionality implemented as yet. This project works on improving the search functionality of Expertiza, by adding search bars if not present, introducing advanced search feature where user can search on the basis of more than one parameters and making the search functionality appear more elegant.&lt;br /&gt;
&lt;br /&gt;
==Problem Definition:==&lt;br /&gt;
&lt;br /&gt;
#An instructor or administrator can search for a user by name, user-ID, or other characteristics.&lt;br /&gt;
#An instructor should be able to search for assignments by name, due date, or other characteristics.&lt;br /&gt;
#An instructor should be able to search for rubrics (or other questionnaires) by name, or by the courses or assignments they have been used in.&lt;br /&gt;
##For the instructor, there also needs to be a way to quickly find rubrics (and other questionnaires) that have been used in a single course.  It should be possible to search or click somewhere to bring up a list of questionnaires used in the course, expanding only the applicable questionnaires in the list of questionnaires.&lt;br /&gt;
##One should also be able to search for questionnaires by words used in questions that belong to the questionnaires.&lt;br /&gt;
#There should be a way to search all reviews of a particular team’s work for particular scores or text strings.  Reviews should be able to be filtered by score, text comment length, reviewer and reviewee.&lt;br /&gt;
#An instructor or administrator should be able to search for all the assignments that a particular user has participated in.&lt;br /&gt;
#If more than one criteria needs to be specified, there should be an 'Advanced Search' button.&lt;br /&gt;
&lt;br /&gt;
==Proposed Solution:==&lt;br /&gt;
Proposed Solution:&lt;br /&gt;
&lt;br /&gt;
The issue asks us to have a Cake type for the question taking in a participant’s contribution, whenever s/he is reviewing the other teammates. We add in a new Question type ‘Cake’, which will be extended from the Scored Question model [cake &amp;lt; scored question &amp;lt; choice question &amp;lt; question]. We intend to keep the Cake type input in the form of the number of stars, on the lines of the existing code. &lt;br /&gt;
&lt;br /&gt;
Addressing self-reviews for Cake Type:&lt;br /&gt;
&lt;br /&gt;
The questionnaire for reviewing teammates includes the question asking the cake (contribution) factor. The point whether the distribution of the cake should include the reviewer himself, is addressed on the basis of the enabling of ‘Self-Review’. If enabled, we include the self contribution to sum it up to one unit (for instance, five stars.) If not, we exclude the reviewer.&lt;br /&gt;
&lt;br /&gt;
There are two ways to integrate the Cake type to the existing flow:&lt;br /&gt;
&lt;br /&gt;
*'''Solution A''': Self-review at team level as an instance of TeammateReviewResponseMap&lt;br /&gt;
&lt;br /&gt;
In the current system workflow, we found that the teammate reviews are taken as instances of TeammateReviewResponseMap. The questionnaire for reviewing teammates includes the question asking the cake (contribution) factor. Ideally, the cake should include the reviewer himself as well.&lt;br /&gt;
&lt;br /&gt;
Currently, whenever a participant is reviewing his teammates, s/he is displayed a page with his current teammates, and this page excludes the logged in user. We include the logged in user ID as well by removing this check, and let him submit his self-review with the same questionnaire as his other teammates have.&lt;br /&gt;
&lt;br /&gt;
The Teammate Review page would be displayed as:&lt;br /&gt;
&lt;br /&gt;
[[File:TRP.png|1000px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Steps to reproduce the proposed workflow:&lt;br /&gt;
#Log in to expertiza to view the home page&lt;br /&gt;
#Login as an Instructor, and then impersonate a student or login as a Student&lt;br /&gt;
#Go to Assignments -&amp;gt; Your team&lt;br /&gt;
#You will see a list of your teammates, including self: Choose a member and click on ‘View’&lt;br /&gt;
#You can see the question for asking the contribution as a cake type&lt;br /&gt;
#There will be a text description next to it denoting what part of the cake is taken (what contribution factor of the work is used)&lt;br /&gt;
&lt;br /&gt;
*'''Solution B''': Self-review at team level as an instance of SelfReviewResponseMap&lt;br /&gt;
&lt;br /&gt;
Currently, we have self reviews in place at an assignment level. This means that a team can review their own work, similar to how they review their peers. We want to extend the self review functionality to not only review the project but to also review the student as a team member. &lt;br /&gt;
We can make use of the existing self review code and extend it to teammate reviews as well. &lt;br /&gt;
&lt;br /&gt;
In the current implementation, a student can perform a self review by going to a particular assignment and clicking on the “Your work” link. If self reviews are enabled for that assignment, then a button will show at the bottom of the page which says “Self review”. Clicking on the button will show a link “Begin”&lt;br /&gt;
&lt;br /&gt;
We want to add another link here, that says “self teammate review”. Such that clicking on the link will render the same questionnaire that is shown for the student to review other teammates.&lt;br /&gt;
&lt;br /&gt;
Steps to reproduce the proposed workflow:&lt;br /&gt;
#Log in to expertiza to view the home page&lt;br /&gt;
#Login as an Instructor, and then impersonate a student or login as a Student&lt;br /&gt;
#Go to Assignments -&amp;gt; Your work&lt;br /&gt;
#Click on self review button at the bottom of the page&lt;br /&gt;
#You will see a new “self teammate review” link here&lt;br /&gt;
#Clicking on the button will render the questionnaire &lt;br /&gt;
#You can see the question for asking the contribution as a cake type&lt;br /&gt;
#There will be a text description next to it denoting what part of the cake is taken (what contribution factor of the work is used)&lt;br /&gt;
&lt;br /&gt;
Final approach: We decide to go with the proposed Solution A (Self-review at team level as an instance of TeammateReviewResponseMap), since it ensures consistency in the flow, while taking teammate reviews and self-reviews.&lt;br /&gt;
&lt;br /&gt;
==Use Case Diagram==&lt;br /&gt;
[[File:UseCaseExpertizaCake.png|center]]&lt;br /&gt;
&lt;br /&gt;
==Proposed Code Changes==&lt;br /&gt;
&lt;br /&gt;
#Edit '''questionnaire/_questionnaire.html.erb''': Add Cake to the list question types&lt;br /&gt;
#Create '''cake.rb''' model that inherits from ScoredQuestion model. Add method to calculate currently added weights of the cake to this model.&lt;br /&gt;
#Edit '''questionnaires_controller.rb''', under “add_new_questions” method, adding a cake type and handle the changes. &lt;br /&gt;
#Edit '''assignments/edit/_review_strategy.html.erb''' and add ‘Allow teammate self-review’ to the list of options.&lt;br /&gt;
#Edit '''student_teams/view.html.erb''' and add reviewer to list of displayed teammates and mark that item as self review in the view.&lt;br /&gt;
#Edit '''response/response.html.erb''' and add cake type questions to the displayed response.&lt;br /&gt;
#Edit '''response/view.html.erb''' and add cake type questions to the displayed response.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Database Design==&lt;br /&gt;
Below is the simplified version of the ER diagram which displays the relationships between the entity sets. &lt;br /&gt;
&lt;br /&gt;
[[File:ER diagram.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Relevant Tables===&lt;br /&gt;
[[File:ER2.png|center]]&lt;br /&gt;
&lt;br /&gt;
==Test Plan: ==&lt;br /&gt;
====Test Details:====&lt;br /&gt;
====UI Testing====&lt;br /&gt;
&lt;br /&gt;
*Reviewing teammates (happy case when contribution is &amp;lt; 100%)&lt;br /&gt;
#A student logs on to expertiza and clicks on an assignment &lt;br /&gt;
#Then he clicks on your team link&lt;br /&gt;
#He should be able to see his teammates under team members&lt;br /&gt;
#Click on review link for a fellow team member&lt;br /&gt;
#Fill the responses for the given questions (which include cake type questions as well) &lt;br /&gt;
#Save the review&lt;br /&gt;
&lt;br /&gt;
*Giving &amp;gt; 100% for cake questions &lt;br /&gt;
#A student logs on to expertiza and clicks on an assignment &lt;br /&gt;
#Then he clicks on your team link&lt;br /&gt;
#He should be able to see his teammates under team members&lt;br /&gt;
#While reviewing a teammate, a student gives 60% as contribution to teammate1 &lt;br /&gt;
#When he tries to give &amp;gt; 40% for the teammate2. He should see a warning that states that total of the cake is exceeding 100%&lt;br /&gt;
&lt;br /&gt;
*Context: Self reviews can be enabled/ disabled for an assignment as per the choice of the instructor. &lt;br /&gt;
#Self reviews enabled&lt;br /&gt;
#A student logs on to expertiza and clicks on an assignment &lt;br /&gt;
#Then he clicks on your team link&lt;br /&gt;
#He should be able to see his teammates and himself (for self review) under team members&lt;br /&gt;
#Total contribution for a cake type question in a teammate review should include the contribution provided by the student in the self review as well. &lt;br /&gt;
#If the contribution is exceeded, a warning should appear&lt;br /&gt;
&lt;br /&gt;
*Self review disabled&lt;br /&gt;
#The link for a reviewer to review himself as a team member should not show&lt;br /&gt;
#The cake type questions in the teammate review should include only contributions provided by the other team members&lt;br /&gt;
&lt;br /&gt;
*Context: If self review is enabled after the assignment has been created and a few students have already given reviews, then it should give a warning. &lt;br /&gt;
#Self review enabled in the middle of the assignment&lt;br /&gt;
#Add teammate review for teammate1&lt;br /&gt;
#Add teammate review for teammate2 (make sure it adds upto 100%)&lt;br /&gt;
#Enable self review as an instructor&lt;br /&gt;
#As a student, notice that a new review button is visible in the “your team” page. &lt;br /&gt;
#Click on review, try to add contribution for self and make sure a warning appears that says that the cake is already at 100%&lt;br /&gt;
&lt;br /&gt;
*Context: If self review is disabled after the assignment has been created and a few students have already given reviews.&lt;br /&gt;
#Self review disabled in the middle of the assignment &lt;br /&gt;
#Enable self review as an instructor&lt;br /&gt;
#Add teammate review for teammate1&lt;br /&gt;
#Add teammate review for teammate2 &lt;br /&gt;
#Add self review (make sure it adds upto 100%)&lt;br /&gt;
#Disable self review as an instructor&lt;br /&gt;
#As a student, notice that the review button is NOT visible in the “your team” page&lt;br /&gt;
&lt;br /&gt;
'''Open question''': what should the expected behavior be? Should we decrease the self review contribution? But this would reduce the total contribution &amp;lt; the desired 100%&lt;br /&gt;
&lt;br /&gt;
Automated testing using Rspec: &lt;br /&gt;
*We will be adding unit / integration tests to all the files we modify.&lt;/div&gt;</summary>
		<author><name>Akariya</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1992._Add_cake_type_to_rubrics_design&amp;diff=128937</id>
		<title>CSC/ECE 517 Fall 2019 - E1992. Add cake type to rubrics design</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1992._Add_cake_type_to_rubrics_design&amp;diff=128937"/>
		<updated>2019-11-12T01:51:41Z</updated>

		<summary type="html">&lt;p&gt;Akariya: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction:==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source application running on Ruby on Rails. It is used for management of courses and the assignments for respective courses, by the faculties and the students. The manage content section of the application has different views which displays information about the users, courses, assignments, questionnaires, and reviews. The application should have a fully functional search functionality throughout the views, so that a user can search any type of data with ease, on the basis of any number of parameters depending on his requirements. Users should be searched on the basis of one more parameters which include name, full name, email, etc. Similarly, assignments should be searched on the basis of name, created date, updated date, etc. However, the search functionality in the existing application is constrained to just a single parameter for users and assignments. Questionnaires management does not have a search functionality implemented as yet. This project works on improving the search functionality of Expertiza, by adding search bars if not present, introducing advanced search feature where user can search on the basis of more than one parameters and making the search functionality appear more elegant.&lt;br /&gt;
&lt;br /&gt;
==Problem Definition:==&lt;br /&gt;
&lt;br /&gt;
#An instructor or administrator can search for a user by name, user-ID, or other characteristics.&lt;br /&gt;
#An instructor should be able to search for assignments by name, due date, or other characteristics.&lt;br /&gt;
#An instructor should be able to search for rubrics (or other questionnaires) by name, or by the courses or assignments they have been used in.&lt;br /&gt;
##For the instructor, there also needs to be a way to quickly find rubrics (and other questionnaires) that have been used in a single course.  It should be possible to search or click somewhere to bring up a list of questionnaires used in the course, expanding only the applicable questionnaires in the list of questionnaires.&lt;br /&gt;
##One should also be able to search for questionnaires by words used in questions that belong to the questionnaires.&lt;br /&gt;
#There should be a way to search all reviews of a particular team’s work for particular scores or text strings.  Reviews should be able to be filtered by score, text comment length, reviewer and reviewee.&lt;br /&gt;
#An instructor or administrator should be able to search for all the assignments that a particular user has participated in.&lt;br /&gt;
#If more than one criteria needs to be specified, there should be an 'Advanced Search' button.&lt;br /&gt;
&lt;br /&gt;
==Proposed Solution:==&lt;br /&gt;
Proposed Solution:&lt;br /&gt;
&lt;br /&gt;
The issue asks us to have a Cake type for the question taking in a participant’s contribution, whenever s/he is reviewing the other teammates. We add in a new Question type ‘Cake’, which will be extended from the Scored Question model [cake &amp;lt; scored question &amp;lt; choice question &amp;lt; question]. We intend to keep the Cake type input in the form of the number of stars, on the lines of the existing code. &lt;br /&gt;
&lt;br /&gt;
Addressing self-reviews for Cake Type:&lt;br /&gt;
&lt;br /&gt;
The questionnaire for reviewing teammates includes the question asking the cake (contribution) factor. The point whether the distribution of the cake should include the reviewer himself, is addressed on the basis of the enabling of ‘Self-Review’. If enabled, we include the self contribution to sum it up to one unit (for instance, five stars.) If not, we exclude the reviewer.&lt;br /&gt;
&lt;br /&gt;
There are two ways to integrate the Cake type to the existing flow:&lt;br /&gt;
&lt;br /&gt;
*'''Solution A''': Self-review at team level as an instance of TeammateReviewResponseMap&lt;br /&gt;
&lt;br /&gt;
In the current system workflow, we found that the teammate reviews are taken as instances of TeammateReviewResponseMap. The questionnaire for reviewing teammates includes the question asking the cake (contribution) factor. Ideally, the cake should include the reviewer himself as well.&lt;br /&gt;
&lt;br /&gt;
Currently, whenever a participant is reviewing his teammates, s/he is displayed a page with his current teammates, and this page excludes the logged in user. We include the logged in user ID as well by removing this check, and let him submit his self-review with the same questionnaire as his other teammates have.&lt;br /&gt;
&lt;br /&gt;
The Teammate Review page would be displayed as:&lt;br /&gt;
&lt;br /&gt;
[[File:TRP_.png|1000 px|center]]&lt;br /&gt;
&lt;br /&gt;
Steps to reproduce the proposed workflow:&lt;br /&gt;
#Log in to expertiza to view the home page&lt;br /&gt;
#Login as an Instructor, and then impersonate a student or login as a Student&lt;br /&gt;
#Go to Assignments -&amp;gt; Your team&lt;br /&gt;
#You will see a list of your teammates, including self: Choose a member and click on ‘View’&lt;br /&gt;
#You can see the question for asking the contribution as a cake type&lt;br /&gt;
#There will be a text description next to it denoting what part of the cake is taken (what contribution factor of the work is used)&lt;br /&gt;
&lt;br /&gt;
*'''Solution B''': Self-review at team level as an instance of SelfReviewResponseMap&lt;br /&gt;
&lt;br /&gt;
Currently, we have self reviews in place at an assignment level. This means that a team can review their own work, similar to how they review their peers. We want to extend the self review functionality to not only review the project but to also review the student as a team member. &lt;br /&gt;
We can make use of the existing self review code and extend it to teammate reviews as well. &lt;br /&gt;
&lt;br /&gt;
In the current implementation, a student can perform a self review by going to a particular assignment and clicking on the “Your work” link. If self reviews are enabled for that assignment, then a button will show at the bottom of the page which says “Self review”. Clicking on the button will show a link “Begin”&lt;br /&gt;
&lt;br /&gt;
We want to add another link here, that says “self teammate review”. Such that clicking on the link will render the same questionnaire that is shown for the student to review other teammates.&lt;br /&gt;
&lt;br /&gt;
Steps to reproduce the proposed workflow:&lt;br /&gt;
#Log in to expertiza to view the home page&lt;br /&gt;
#Login as an Instructor, and then impersonate a student or login as a Student&lt;br /&gt;
#Go to Assignments -&amp;gt; Your work&lt;br /&gt;
#Click on self review button at the bottom of the page&lt;br /&gt;
#You will see a new “self teammate review” link here&lt;br /&gt;
#Clicking on the button will render the questionnaire &lt;br /&gt;
#You can see the question for asking the contribution as a cake type&lt;br /&gt;
#There will be a text description next to it denoting what part of the cake is taken (what contribution factor of the work is used)&lt;br /&gt;
&lt;br /&gt;
Final approach: We decide to go with the proposed Solution A (Self-review at team level as an instance of TeammateReviewResponseMap), since it ensures consistency in the flow, while taking teammate reviews and self-reviews.&lt;br /&gt;
&lt;br /&gt;
==Use Case Diagram==&lt;br /&gt;
[[File:UseCaseExpertizaCake.png|center]]&lt;br /&gt;
&lt;br /&gt;
==Proposed Code Changes==&lt;br /&gt;
&lt;br /&gt;
#Edit '''questionnaire/_questionnaire.html.erb''': Add Cake to the list question types&lt;br /&gt;
#Create '''cake.rb''' model that inherits from ScoredQuestion model. Add method to calculate currently added weights of the cake to this model.&lt;br /&gt;
#Edit '''questionnaires_controller.rb''', under “add_new_questions” method, adding a cake type and handle the changes. &lt;br /&gt;
#Edit '''assignments/edit/_review_strategy.html.erb''' and add ‘Allow teammate self-review’ to the list of options.&lt;br /&gt;
#Edit '''student_teams/view.html.erb''' and add reviewer to list of displayed teammates and mark that item as self review in the view.&lt;br /&gt;
#Edit '''response/response.html.erb''' and add cake type questions to the displayed response.&lt;br /&gt;
#Edit '''response/view.html.erb''' and add cake type questions to the displayed response.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Database Design==&lt;br /&gt;
Below is the simplified version of the ER diagram which displays the relationships between the entity sets. &lt;br /&gt;
&lt;br /&gt;
[[File:ER diagram.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Relevant Tables===&lt;br /&gt;
[[File:ER2.png|center]]&lt;br /&gt;
&lt;br /&gt;
==Test Plan: ==&lt;br /&gt;
====Test Details:====&lt;br /&gt;
====UI Testing====&lt;br /&gt;
&lt;br /&gt;
*Reviewing teammates (happy case when contribution is &amp;lt; 100%)&lt;br /&gt;
#A student logs on to expertiza and clicks on an assignment &lt;br /&gt;
#Then he clicks on your team link&lt;br /&gt;
#He should be able to see his teammates under team members&lt;br /&gt;
#Click on review link for a fellow team member&lt;br /&gt;
#Fill the responses for the given questions (which include cake type questions as well) &lt;br /&gt;
#Save the review&lt;br /&gt;
&lt;br /&gt;
*Giving &amp;gt; 100% for cake questions &lt;br /&gt;
#A student logs on to expertiza and clicks on an assignment &lt;br /&gt;
#Then he clicks on your team link&lt;br /&gt;
#He should be able to see his teammates under team members&lt;br /&gt;
#While reviewing a teammate, a student gives 60% as contribution to teammate1 &lt;br /&gt;
#When he tries to give &amp;gt; 40% for the teammate2. He should see a warning that states that total of the cake is exceeding 100%&lt;br /&gt;
&lt;br /&gt;
*Context: Self reviews can be enabled/ disabled for an assignment as per the choice of the instructor. &lt;br /&gt;
#Self reviews enabled&lt;br /&gt;
#A student logs on to expertiza and clicks on an assignment &lt;br /&gt;
#Then he clicks on your team link&lt;br /&gt;
#He should be able to see his teammates and himself (for self review) under team members&lt;br /&gt;
#Total contribution for a cake type question in a teammate review should include the contribution provided by the student in the self review as well. &lt;br /&gt;
#If the contribution is exceeded, a warning should appear&lt;br /&gt;
&lt;br /&gt;
*Self review disabled&lt;br /&gt;
#The link for a reviewer to review himself as a team member should not show&lt;br /&gt;
#The cake type questions in the teammate review should include only contributions provided by the other team members&lt;br /&gt;
&lt;br /&gt;
*Context: If self review is enabled after the assignment has been created and a few students have already given reviews, then it should give a warning. &lt;br /&gt;
#Self review enabled in the middle of the assignment&lt;br /&gt;
#Add teammate review for teammate1&lt;br /&gt;
#Add teammate review for teammate2 (make sure it adds upto 100%)&lt;br /&gt;
#Enable self review as an instructor&lt;br /&gt;
#As a student, notice that a new review button is visible in the “your team” page. &lt;br /&gt;
#Click on review, try to add contribution for self and make sure a warning appears that says that the cake is already at 100%&lt;br /&gt;
&lt;br /&gt;
*Context: If self review is disabled after the assignment has been created and a few students have already given reviews.&lt;br /&gt;
#Self review disabled in the middle of the assignment &lt;br /&gt;
#Enable self review as an instructor&lt;br /&gt;
#Add teammate review for teammate1&lt;br /&gt;
#Add teammate review for teammate2 &lt;br /&gt;
#Add self review (make sure it adds upto 100%)&lt;br /&gt;
#Disable self review as an instructor&lt;br /&gt;
#As a student, notice that the review button is NOT visible in the “your team” page&lt;br /&gt;
&lt;br /&gt;
'''Open question''': what should the expected behavior be? Should we decrease the self review contribution? But this would reduce the total contribution &amp;lt; the desired 100%&lt;br /&gt;
&lt;br /&gt;
Automated testing using Rspec: &lt;br /&gt;
*We will be adding unit / integration tests to all the files we modify.&lt;/div&gt;</summary>
		<author><name>Akariya</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1992._Add_cake_type_to_rubrics_design&amp;diff=128927</id>
		<title>CSC/ECE 517 Fall 2019 - E1992. Add cake type to rubrics design</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1992._Add_cake_type_to_rubrics_design&amp;diff=128927"/>
		<updated>2019-11-12T01:40:48Z</updated>

		<summary type="html">&lt;p&gt;Akariya: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction:==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source application running on Ruby on Rails. It is used for management of courses and the assignments for respective courses, by the faculties and the students. The manage content section of the application has different views which displays information about the users, courses, assignments, questionnaires, and reviews. The application should have a fully functional search functionality throughout the views, so that a user can search any type of data with ease, on the basis of any number of parameters depending on his requirements. Users should be searched on the basis of one more parameters which include name, full name, email, etc. Similarly, assignments should be searched on the basis of name, created date, updated date, etc. However, the search functionality in the existing application is constrained to just a single parameter for users and assignments. Questionnaires management does not have a search functionality implemented as yet. This project works on improving the search functionality of Expertiza, by adding search bars if not present, introducing advanced search feature where user can search on the basis of more than one parameters and making the search functionality appear more elegant.&lt;br /&gt;
&lt;br /&gt;
==Problem Definition:==&lt;br /&gt;
&lt;br /&gt;
#An instructor or administrator can search for a user by name, user-ID, or other characteristics.&lt;br /&gt;
#An instructor should be able to search for assignments by name, due date, or other characteristics.&lt;br /&gt;
#An instructor should be able to search for rubrics (or other questionnaires) by name, or by the courses or assignments they have been used in.&lt;br /&gt;
##For the instructor, there also needs to be a way to quickly find rubrics (and other questionnaires) that have been used in a single course.  It should be possible to search or click somewhere to bring up a list of questionnaires used in the course, expanding only the applicable questionnaires in the list of questionnaires.&lt;br /&gt;
##One should also be able to search for questionnaires by words used in questions that belong to the questionnaires.&lt;br /&gt;
#There should be a way to search all reviews of a particular team’s work for particular scores or text strings.  Reviews should be able to be filtered by score, text comment length, reviewer and reviewee.&lt;br /&gt;
#An instructor or administrator should be able to search for all the assignments that a particular user has participated in.&lt;br /&gt;
#If more than one criteria needs to be specified, there should be an 'Advanced Search' button.&lt;br /&gt;
&lt;br /&gt;
==Proposed Solution:==&lt;br /&gt;
Proposed Solution:&lt;br /&gt;
&lt;br /&gt;
The issue asks us to have a Cake type for the question taking in a participant’s contribution, whenever s/he is reviewing the other teammates. We add in a new Question type ‘Cake’, which will be extended from the Scored Question model [cake &amp;lt; scored question &amp;lt; choice question &amp;lt; question]. We intend to keep the Cake type input in the form of the number of stars, on the lines of the existing code. &lt;br /&gt;
&lt;br /&gt;
Addressing self-reviews for Cake Type:&lt;br /&gt;
&lt;br /&gt;
The questionnaire for reviewing teammates includes the question asking the cake (contribution) factor. The point whether the distribution of the cake should include the reviewer himself, is addressed on the basis of the enabling of ‘Self-Review’. If enabled, we include the self contribution to sum it up to one unit (for instance, five stars.) If not, we exclude the reviewer.&lt;br /&gt;
&lt;br /&gt;
There are two ways to integrate the Cake type to the existing flow:&lt;br /&gt;
&lt;br /&gt;
*'''Solution A''': Self-review at team level as an instance of TeammateReviewResponseMap&lt;br /&gt;
&lt;br /&gt;
In the current system workflow, we found that the teammate reviews are taken as instances of TeammateReviewResponseMap. The questionnaire for reviewing teammates includes the question asking the cake (contribution) factor. Ideally, the cake should include the reviewer himself as well.&lt;br /&gt;
&lt;br /&gt;
Currently, whenever a participant is reviewing his teammates, s/he is displayed a page with his current teammates, and this page excludes the logged in user. We include the logged in user ID as well by removing this check, and let him submit his self-review with the same questionnaire as his other teammates have.&lt;br /&gt;
&lt;br /&gt;
The Teammate Review page would be displayed as:&lt;br /&gt;
&lt;br /&gt;
[[File:TRP_.png|1000 px|center]]&lt;br /&gt;
&lt;br /&gt;
Steps to reproduce the proposed workflow:&lt;br /&gt;
#Log in to expertiza to view the home page&lt;br /&gt;
#Login as an Instructor, and then impersonate a student or login as a Student&lt;br /&gt;
#Go to Assignments -&amp;gt; Your team&lt;br /&gt;
#You will see a list of your teammates, including self: Choose a member and click on ‘View’&lt;br /&gt;
#You can see the question for asking the contribution as a cake type&lt;br /&gt;
#There will be a text description next to it denoting what part of the cake is taken (what contribution factor of the work is used)&lt;br /&gt;
&lt;br /&gt;
*'''Solution B''': Self-review at team level as an instance of SelfReviewResponseMap&lt;br /&gt;
&lt;br /&gt;
Currently, we have self reviews in place at an assignment level. This means that a team can review their own work, similar to how they review their peers. We want to extend the self review functionality to not only review the project but to also review the student as a team member. &lt;br /&gt;
We can make use of the existing self review code and extend it to teammate reviews as well. &lt;br /&gt;
&lt;br /&gt;
In the current implementation, a student can perform a self review by going to a particular assignment and clicking on the “Your work” link. If self reviews are enabled for that assignment, then a button will show at the bottom of the page which says “Self review”. Clicking on the button will show a link “Begin”&lt;br /&gt;
&lt;br /&gt;
We want to add another link here, that says “self teammate review”. Such that clicking on the link will render the same questionnaire that is shown for the student to review other teammates.&lt;br /&gt;
&lt;br /&gt;
Steps to reproduce the proposed workflow:&lt;br /&gt;
#Log in to expertiza to view the home page&lt;br /&gt;
#Login as an Instructor, and then impersonate a student or login as a Student&lt;br /&gt;
#Go to Assignments -&amp;gt; Your work&lt;br /&gt;
#Click on self review button at the bottom of the page&lt;br /&gt;
#You will see a new “self teammate review” link here&lt;br /&gt;
#Clicking on the button will render the questionnaire &lt;br /&gt;
#You can see the question for asking the contribution as a cake type&lt;br /&gt;
#There will be a text description next to it denoting what part of the cake is taken (what contribution factor of the work is used)&lt;br /&gt;
&lt;br /&gt;
Final approach: We decide to go with the proposed Solution A (Self-review at team level as an instance of TeammateReviewResponseMap), since it ensures consistency in the flow, while taking teammate reviews and self-reviews.&lt;br /&gt;
&lt;br /&gt;
==Use Case Diagram==&lt;br /&gt;
[[File:UseCaseExpertizaCake.png|center]]&lt;br /&gt;
&lt;br /&gt;
==Proposed Code Changes==&lt;br /&gt;
&lt;br /&gt;
#Proposed Code Changes&lt;br /&gt;
#Edit questionnaire/_questionnaire.html.erb: Add Cake to the list question types&lt;br /&gt;
#Create cake.rb model that inherits from ScoredQuestion model. Add method to calculate currently added weights of the cake to this model.&lt;br /&gt;
#Edit questionnaires_controller.rb, under “add_new_questions” method, adding a cake type and handle the changes. &lt;br /&gt;
#Edit assignments/edit/_review_strategy.html.erb and add ‘Allow teammate self-review’ to the list of options.&lt;br /&gt;
#Edit student_teams/view and add reviewer to list of displayed teammates and mark that item as self review in the view.&lt;br /&gt;
#Edit response/response.html.erb and add cake type questions to the displayed response.&lt;br /&gt;
#Edit response/view.html.erb and add cake type questions to the displayed response.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Database Design==&lt;br /&gt;
Below is the simplified version of the ER diagram which displays the relationships between the entity sets. &lt;br /&gt;
&lt;br /&gt;
[[File:ER diagram.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Relevant Tables===&lt;br /&gt;
[[File:ER2.png|center]]&lt;br /&gt;
&lt;br /&gt;
==Test Plan: ==&lt;br /&gt;
=== Automated Tests ===&lt;br /&gt;
Automated tests in RSpec will be added as we implement the search functionality for each modified file. Most of the tests added will be unit tests that cover the use cases for each flow and changes made in the model as per the requirement description.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Test Details:====&lt;/div&gt;</summary>
		<author><name>Akariya</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:TRP_.png&amp;diff=128922</id>
		<title>File:TRP .png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:TRP_.png&amp;diff=128922"/>
		<updated>2019-11-12T01:34:35Z</updated>

		<summary type="html">&lt;p&gt;Akariya: new&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;new&lt;/div&gt;</summary>
		<author><name>Akariya</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1992._Add_cake_type_to_rubrics_design&amp;diff=128916</id>
		<title>CSC/ECE 517 Fall 2019 - E1992. Add cake type to rubrics design</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1992._Add_cake_type_to_rubrics_design&amp;diff=128916"/>
		<updated>2019-11-12T01:31:01Z</updated>

		<summary type="html">&lt;p&gt;Akariya: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction:==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source application running on Ruby on Rails. It is used for management of courses and the assignments for respective courses, by the faculties and the students. The manage content section of the application has different views which displays information about the users, courses, assignments, questionnaires, and reviews. The application should have a fully functional search functionality throughout the views, so that a user can search any type of data with ease, on the basis of any number of parameters depending on his requirements. Users should be searched on the basis of one more parameters which include name, full name, email, etc. Similarly, assignments should be searched on the basis of name, created date, updated date, etc. However, the search functionality in the existing application is constrained to just a single parameter for users and assignments. Questionnaires management does not have a search functionality implemented as yet. This project works on improving the search functionality of Expertiza, by adding search bars if not present, introducing advanced search feature where user can search on the basis of more than one parameters and making the search functionality appear more elegant.&lt;br /&gt;
&lt;br /&gt;
==Problem Definition:==&lt;br /&gt;
&lt;br /&gt;
#An instructor or administrator can search for a user by name, user-ID, or other characteristics.&lt;br /&gt;
#An instructor should be able to search for assignments by name, due date, or other characteristics.&lt;br /&gt;
#An instructor should be able to search for rubrics (or other questionnaires) by name, or by the courses or assignments they have been used in.&lt;br /&gt;
##For the instructor, there also needs to be a way to quickly find rubrics (and other questionnaires) that have been used in a single course.  It should be possible to search or click somewhere to bring up a list of questionnaires used in the course, expanding only the applicable questionnaires in the list of questionnaires.&lt;br /&gt;
##One should also be able to search for questionnaires by words used in questions that belong to the questionnaires.&lt;br /&gt;
#There should be a way to search all reviews of a particular team’s work for particular scores or text strings.  Reviews should be able to be filtered by score, text comment length, reviewer and reviewee.&lt;br /&gt;
#An instructor or administrator should be able to search for all the assignments that a particular user has participated in.&lt;br /&gt;
#If more than one criteria needs to be specified, there should be an 'Advanced Search' button.&lt;br /&gt;
&lt;br /&gt;
==Proposed Solution:==&lt;br /&gt;
Proposed Solution:&lt;br /&gt;
&lt;br /&gt;
The issue asks us to have a Cake type for the question taking in a participant’s contribution, whenever s/he is reviewing the other teammates. We add in a new Question type ‘Cake’, which will be extended from the Scored Question model [cake &amp;lt; scored question &amp;lt; choice question &amp;lt; question]. We intend to keep the Cake type input in the form of the number of stars, on the lines of the existing code. &lt;br /&gt;
&lt;br /&gt;
Addressing self-reviews for Cake Type:&lt;br /&gt;
&lt;br /&gt;
The questionnaire for reviewing teammates includes the question asking the cake (contribution) factor. The point whether the distribution of the cake should include the reviewer himself, is addressed on the basis of the enabling of ‘Self-Review’. If enabled, we include the self contribution to sum it up to one unit (for instance, five stars.) If not, we exclude the reviewer.&lt;br /&gt;
&lt;br /&gt;
There are two ways to integrate the Cake type to the existing flow:&lt;br /&gt;
&lt;br /&gt;
*Solution A: Self-review at team level as an instance of TeammateReviewResponseMap&lt;br /&gt;
&lt;br /&gt;
In the current system workflow, we found that the teammate reviews are taken as instances of TeammateReviewResponseMap. The questionnaire for reviewing teammates includes the question asking the cake (contribution) factor. Ideally, the cake should include the reviewer himself as well.&lt;br /&gt;
&lt;br /&gt;
Currently, whenever a participant is reviewing his teammates, s/he is displayed a page with his current teammates, and this page excludes the logged in user. We include the logged in user ID as well by removing this check, and let him submit his self-review with the same questionnaire as his other teammates have.&lt;br /&gt;
&lt;br /&gt;
The Teammate Review page would be displayed as:&lt;br /&gt;
&lt;br /&gt;
[[File:TRP.png | 800 px]]&lt;br /&gt;
&lt;br /&gt;
Steps to reproduce the proposed workflow:&lt;br /&gt;
#Log in to expertiza to view the home page&lt;br /&gt;
#Login as an Instructor, and then impersonate a student or login as a Student&lt;br /&gt;
#Go to Assignments -&amp;gt; Your team&lt;br /&gt;
#You will see a list of your teammates, including self: Choose a member and click on ‘View’&lt;br /&gt;
#You can see the question for asking the contribution as a cake type&lt;br /&gt;
#There will be a text description next to it denoting what part of the cake is taken (what contribution factor of the work is used)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Solution B: Self-review at team level as an instance of SelfReviewResponseMap&lt;br /&gt;
&lt;br /&gt;
Currently, we have self reviews in place at an assignment level. This means that a team can review their own work, similar to how they review their peers. We want to extend the self review functionality to not only review the project but to also review the student as a team member. &lt;br /&gt;
We can make use of the existing self review code and extend it to teammate reviews as well. &lt;br /&gt;
&lt;br /&gt;
In the current implementation, a student can perform a self review by going to a particular assignment and clicking on the “Your work” link. If self reviews are enabled for that assignment, then a button will show at the bottom of the page which says “Self review”. Clicking on the button will show a link “Begin”&lt;br /&gt;
&lt;br /&gt;
We want to add another link here, that says “self teammate review”. Such that clicking on the link will render the same questionnaire that is shown for the student to review other teammates.&lt;br /&gt;
&lt;br /&gt;
Steps to reproduce the proposed workflow:&lt;br /&gt;
#Log in to expertiza to view the home page&lt;br /&gt;
#Login as an Instructor, and then impersonate a student or login as a Student&lt;br /&gt;
#Go to Assignments -&amp;gt; Your work&lt;br /&gt;
#Click on self review button at the bottom of the page&lt;br /&gt;
#You will see a new “self teammate review” link here&lt;br /&gt;
#Clicking on the button will render the questionnaire &lt;br /&gt;
#You can see the question for asking the contribution as a cake type&lt;br /&gt;
#There will be a text description next to it denoting what part of the cake is taken (what contribution factor of the work is used)&lt;br /&gt;
&lt;br /&gt;
Final approach: We decide to go with the proposed Solution A (Self-review at team level as an instance of TeammateReviewResponseMap), since it ensures consistency in the flow, while taking teammate reviews and self-reviews.&lt;br /&gt;
&lt;br /&gt;
==Use Case Diagram==&lt;br /&gt;
[[File:UseCaseExpertizaCake.png|center]]&lt;br /&gt;
&lt;br /&gt;
==Proposed Code Changes==&lt;br /&gt;
&lt;br /&gt;
#Proposed Code Changes&lt;br /&gt;
#Edit questionnaire/_questionnaire.html.erb: Add Cake to the list question types&lt;br /&gt;
#Create cake.rb model that inherits from ScoredQuestion model. Add method to calculate currently added weights of the cake to this model.&lt;br /&gt;
#Edit questionnaires_controller.rb, under “add_new_questions” method, adding a cake type and handle the changes. &lt;br /&gt;
#Edit assignments/edit/_review_strategy.html.erb and add ‘Allow teammate self-review’ to the list of options.&lt;br /&gt;
#Edit student_teams/view and add reviewer to list of displayed teammates and mark that item as self review in the view.&lt;br /&gt;
#Edit response/response.html.erb and add cake type questions to the displayed response.&lt;br /&gt;
#Edit response/view.html.erb and add cake type questions to the displayed response.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Database Design==&lt;br /&gt;
Below is the simplified version of the ER diagram which displays the relationships between the entity sets. &lt;br /&gt;
&lt;br /&gt;
[[File:ER diagram.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Relevant Tables===&lt;br /&gt;
[[File:ER2.png|center]]&lt;br /&gt;
&lt;br /&gt;
==Test Plan: ==&lt;br /&gt;
=== Automated Tests ===&lt;br /&gt;
Automated tests in RSpec will be added as we implement the search functionality for each modified file. Most of the tests added will be unit tests that cover the use cases for each flow and changes made in the model as per the requirement description.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Test Details:====&lt;br /&gt;
=====User Model ( spec/models/user_spec.rb )=====&lt;br /&gt;
# Search by user name&lt;br /&gt;
# Search by user name that does not exist&lt;br /&gt;
# Search by user email&lt;br /&gt;
# Search by user email that does not exist&lt;br /&gt;
# Search by user email containing a substring&lt;br /&gt;
# Search by user full name&lt;br /&gt;
# Search by user full name is empty&lt;br /&gt;
# Search by user name and email&lt;br /&gt;
# Search for assignments participated&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=====Assignment Model ( spec/models/assignment_spec.rb )=====&lt;br /&gt;
# Search by user name&lt;br /&gt;
# Search by institution&lt;br /&gt;
# Search by creation date&lt;br /&gt;
# Search by updated date&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=====Rubrics=====&lt;br /&gt;
# Search by name&lt;br /&gt;
# Search by courses used in&lt;br /&gt;
# Search by assignments used in&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=====Reviews=====&lt;br /&gt;
# Search all reviews of a particular team’s work for particular scores or text strings.  &lt;br /&gt;
# Search by score&lt;br /&gt;
# Search by text comment length&lt;br /&gt;
# Search by reviewer and reviewee&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Manual Tests ===&lt;br /&gt;
=====Search for User=====&lt;br /&gt;
# Setup: create a user with name=&amp;quot;student&amp;quot; and userId=&amp;quot;5000&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
# Action: Instructor clicks on manage - &amp;gt; users -&amp;gt; in textbox enters name=&amp;quot;student&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
# Response: Relevant details of student, name=&amp;quot;student&amp;quot; is displayed&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
# Action: Instructor clicks on manage - &amp;gt; users -&amp;gt; advanced search-&amp;gt;clicks on checkbox student id and enters &amp;quot;5000&amp;quot; and click &amp;quot;ok&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
# Response: Relevant details of student, name=&amp;quot;student&amp;quot; is displayed&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=====Search for Assignments=====&lt;br /&gt;
# Setup create an assignment with name=&amp;quot;assignment&amp;quot; and set a due date&amp;lt;br&amp;gt;&lt;br /&gt;
# Action : Instructor clicks on Manage -&amp;gt; Assignments, in textbox enter &amp;quot;assignment&amp;quot; in relevant tab&amp;lt;br&amp;gt; &lt;br /&gt;
# Response : Relevant assignment should be displayed&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
# Action : Instructor clicks on Manage -&amp;gt; Assignments-&amp;gt; drop down and apply filters for due date and enter date and click &amp;quot;ok&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
# Response : Relevant assignments should be displayed&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=====Search for Questionnaires=====&lt;br /&gt;
# Setup : Create a Questionnaire, add questions to it&amp;lt;br&amp;gt;&lt;br /&gt;
# Action : Log in as instructor,  Manage -&amp;gt; Questionnaires, in text box enter text&amp;lt;br&amp;gt;&lt;br /&gt;
# Response : Questionnaires matching text are shown&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
# Action : Log in as instructor,  Manage -&amp;gt; Questionnaires, click advanced search and check creation date and enter value&amp;lt;br&amp;gt;&lt;br /&gt;
# Response : Questionnaires matching text are shown&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=====Search for Reviews=====&lt;br /&gt;
# Setup : Setup review for an assignment, login as student and then add review &amp;lt;br&amp;gt;&lt;br /&gt;
# Action : Log in as instructor, Manage -&amp;gt; Assignments, Click on Review Report icon on corresponding assignment&amp;lt;br&amp;gt;&lt;br /&gt;
# Result : Review should be seen&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
# Action : Click Advanced search, check review by text  and enter text&amp;lt;br&amp;gt;  &lt;br /&gt;
# Result : Matching review should be visible&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Akariya</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:UseCaseExpertizaCake.png&amp;diff=128915</id>
		<title>File:UseCaseExpertizaCake.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:UseCaseExpertizaCake.png&amp;diff=128915"/>
		<updated>2019-11-12T01:30:43Z</updated>

		<summary type="html">&lt;p&gt;Akariya: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Akariya</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:TRP.png&amp;diff=128898</id>
		<title>File:TRP.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:TRP.png&amp;diff=128898"/>
		<updated>2019-11-12T01:17:30Z</updated>

		<summary type="html">&lt;p&gt;Akariya: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Akariya</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1992._Add_cake_type_to_rubrics_design&amp;diff=128893</id>
		<title>CSC/ECE 517 Fall 2019 - E1992. Add cake type to rubrics design</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1992._Add_cake_type_to_rubrics_design&amp;diff=128893"/>
		<updated>2019-11-12T01:12:35Z</updated>

		<summary type="html">&lt;p&gt;Akariya: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction:==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source application running on Ruby on Rails. It is used for management of courses and the assignments for respective courses, by the faculties and the students. The manage content section of the application has different views which displays information about the users, courses, assignments, questionnaires, and reviews. The application should have a fully functional search functionality throughout the views, so that a user can search any type of data with ease, on the basis of any number of parameters depending on his requirements. Users should be searched on the basis of one more parameters which include name, full name, email, etc. Similarly, assignments should be searched on the basis of name, created date, updated date, etc. However, the search functionality in the existing application is constrained to just a single parameter for users and assignments. Questionnaires management does not have a search functionality implemented as yet. This project works on improving the search functionality of Expertiza, by adding search bars if not present, introducing advanced search feature where user can search on the basis of more than one parameters and making the search functionality appear more elegant.&lt;br /&gt;
&lt;br /&gt;
==Problem Definition:==&lt;br /&gt;
&lt;br /&gt;
#An instructor or administrator can search for a user by name, user-ID, or other characteristics.&lt;br /&gt;
#An instructor should be able to search for assignments by name, due date, or other characteristics.&lt;br /&gt;
#An instructor should be able to search for rubrics (or other questionnaires) by name, or by the courses or assignments they have been used in.&lt;br /&gt;
##For the instructor, there also needs to be a way to quickly find rubrics (and other questionnaires) that have been used in a single course.  It should be possible to search or click somewhere to bring up a list of questionnaires used in the course, expanding only the applicable questionnaires in the list of questionnaires.&lt;br /&gt;
##One should also be able to search for questionnaires by words used in questions that belong to the questionnaires.&lt;br /&gt;
#There should be a way to search all reviews of a particular team’s work for particular scores or text strings.  Reviews should be able to be filtered by score, text comment length, reviewer and reviewee.&lt;br /&gt;
#An instructor or administrator should be able to search for all the assignments that a particular user has participated in.&lt;br /&gt;
#If more than one criteria needs to be specified, there should be an 'Advanced Search' button.&lt;br /&gt;
&lt;br /&gt;
==Proposed Solution:==&lt;br /&gt;
===Search for User:===&lt;br /&gt;
&lt;br /&gt;
In the current system workflow, we found that the user is unable to search in the Manage Users view. In the proposed workflow, we plan to enable the user to search by all the columns in the UI viz. Name, Full name, Email Address, Role, Parent by entering a partial or a complete text that matches with the particular field. We will also allow searching for fields irrespective of the case of the searched string. The user will be able to apply multiple filters at a time and the output of the query will match all filters applied. If no results are found, an empty list will be returned.&lt;br /&gt;
&lt;br /&gt;
Steps to reproduce the proposed workflow:&lt;br /&gt;
:#Log in to expertiza to view the home page&lt;br /&gt;
:#Go to Manage &amp;gt; Users&lt;br /&gt;
:#Type the search string in the search box available on the UI and select the column to search for from the dropdown.&lt;br /&gt;
:#To perform search based on multiple filters, the user can tap on the Advanced Search button adjacent to the Search button, the view renders a hidden div containing textboxes for all the columns, allowing the user to search based on multiple columns.&lt;br /&gt;
:#All the entries that match the specified criteria will be returned.&lt;br /&gt;
:#An empty list is returned if the search criteria doesn't match any valid records in the database.&lt;br /&gt;
&lt;br /&gt;
===Search for Assignments:===&lt;br /&gt;
&lt;br /&gt;
In the current system implementation, searching via the name of the assignment is supported with partial or complete assignment name. However, the search is case sensitive. In the proposed system, the user will be able to search for an assignment using additional filters such as Creation Date and Updated Date along with Assignment Name. The user will also be able to apply multiple filters at a time and the output of the query will match all filters applied. If no results are found, an empty list will be returned.&lt;br /&gt;
&lt;br /&gt;
To search for an assignment by Creation Date, the user will be prompted with a calendar where he can select a date and all the assignments created on or before the selected date will be displayed. &lt;br /&gt;
&lt;br /&gt;
To apply multiple filters, user can tap on the Advanced Search button available, adjacent to the Search button; a hidden div will then be rendered below containing textboxes for all the columns. All assignments that were created before the selected date for Creation Date or Updated Date columns and the ones that match other filters will be returned. A empty list will be returned if the search criteria doesn't match any records in the database.&lt;br /&gt;
&lt;br /&gt;
Steps to reproduce the proposed workflow:&lt;br /&gt;
:#Log in to expertiza to view the home page&lt;br /&gt;
:#Go to Manage &amp;gt; Assignments&lt;br /&gt;
:#Type the search criteria in the available search criteria and select the appropriate field from the dropdown.&lt;br /&gt;
:#To perform search based on multiple filters, the user can tap on the Advanced Search button adjacent to the Search button, the view renders a hidden div containing textboxes for all the columns, allowing the user to search based on multiple columns.&lt;br /&gt;
:#All the entries that match the given criteria will be returned.&lt;br /&gt;
:#An empty list is returned if the search criteria doesn't match any valid records in the database.&lt;br /&gt;
&lt;br /&gt;
===Search for Questionnaires:===&lt;br /&gt;
&lt;br /&gt;
The existing system does not have a search functionality under Questionnaires. The proposed system will implement a search functionality for searching via the name of the questionnaire, the text in the questions within a questionnaire, date of creation, and date updated by entering a partial or a complete text that matches with the particular field. We will also allow searching for fields irrespective of the case of the searched string. The user will be able to apply multiple filters at a time and the output of the query will match all the filters applied. If no results are found, an empty list will be returned.&lt;br /&gt;
&lt;br /&gt;
To search for an assignment by Creation Date, the user will be prompted with a calendar where he can select a date and all the assignments created on or before the selected date will be displayed. &lt;br /&gt;
&lt;br /&gt;
To apply multiple filters, user can tap on the Advanced Search button available, adjacent to the Search button; a hidden div will then be rendered below containing textboxes for all the columns. All assignments that were created before the selected date for Creation Date or Updated Date columns and the ones that match other filters will be returned. A empty list will be returned if the search criteria doesn't match any records in the database. The questionnaires will be grouped on the basis of their courses and will be expanded when clicked.&lt;br /&gt;
&lt;br /&gt;
Steps to reproduce the proposed workflow:&lt;br /&gt;
:#Log in to expertiza to view the home page&lt;br /&gt;
:#Go to Manage &amp;gt; Questionnaires&lt;br /&gt;
:#Type the search criteria in the available search criteria and select the appropriate field from the dropdown.&lt;br /&gt;
:#To perform search based on multiple filters, the user can tap on the Advanced Search button adjacent to the Search button, the view renders a hidden div containing textboxes for all the columns, allowing the user to search based on multiple columns.&lt;br /&gt;
:#All the entries that match the given criteria will be returned.&lt;br /&gt;
:#An empty list is returned if the search criteria doesn't match any valid records in the database.&lt;br /&gt;
&lt;br /&gt;
===Search for Reviews:===&lt;br /&gt;
&lt;br /&gt;
The existing system does not have a search functionality under Reviews. The proposed system will implement a search functionality for searching using the attributes like team name, score, reviewer, comment etc. by entering a partial or a complete text that matches with the particular field. We will also allow searching for fields irrespective of the case of the searched string. The user will be able to apply multiple filters at a time and the output of the query will match all the filters applied. If no results are found, an empty list will be returned.&lt;br /&gt;
&lt;br /&gt;
The user will be able to apply multiple filters at a time and the output of the query will match all filters applied. If no results are found, an empty list will be returned.&lt;br /&gt;
&lt;br /&gt;
Steps to reproduce the proposed workflow:&lt;br /&gt;
:#Log in to expertiza to view the home page&lt;br /&gt;
:#&lt;br /&gt;
:#Type the search criteria in the available search criteria and select the appropriate field from the dropdown.&lt;br /&gt;
:#To perform search based on multiple filters, the user can tap on the Advanced Search button adjacent to the Search button, the view renders a hidden div containing textboxes for all the columns, allowing the user to search based on multiple columns.&lt;br /&gt;
:#All the entries that match the given criteria will be returned.&lt;br /&gt;
:#An empty list is returned if the search criteria doesn't match any valid records in the database.&lt;br /&gt;
&lt;br /&gt;
==Use Case Diagram==&lt;br /&gt;
[[File:UseCaseExpertizaSearch.png|center]]&lt;br /&gt;
&lt;br /&gt;
==Proposed Code Changes==&lt;br /&gt;
&lt;br /&gt;
The search feature could be implemented in a more RESTful manner by adding it to individual models rather than implementing it as a single controller.&lt;br /&gt;
&lt;br /&gt;
If we followed this approach the search query would be as follows:&lt;br /&gt;
#localhost:port/user/search?name=&amp;lt;&amp;gt;&lt;br /&gt;
#localhost:port/assignment/search?name=&amp;lt;&amp;gt;&lt;br /&gt;
#localhost:port/questionnaire/search?name=&amp;lt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Following is the list of search attributes for a given entity along with a list of files that would altered in the process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;User&amp;lt;/b&amp;gt;&lt;br /&gt;
*Search fields&lt;br /&gt;
#username&lt;br /&gt;
#user_id&lt;br /&gt;
#fullname&lt;br /&gt;
#email&lt;br /&gt;
&lt;br /&gt;
*Files to be modified:&lt;br /&gt;
#app/views/users/list.html.erb&lt;br /&gt;
#app/controllers/users_controller.rb&lt;br /&gt;
#app/models/user.rb&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Assignment&amp;lt;/b&amp;gt;&lt;br /&gt;
*Search fields&lt;br /&gt;
#assignment_name&lt;br /&gt;
#assignee_username&lt;br /&gt;
#assignee_name&lt;br /&gt;
#due_date_before&lt;br /&gt;
#due_date_after&lt;br /&gt;
#created_before&lt;br /&gt;
#created_after&lt;br /&gt;
&lt;br /&gt;
*Modified files&lt;br /&gt;
#app/models/assignment_node.rb&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Questionnaire&amp;lt;/b&amp;gt;&lt;br /&gt;
*Search fields&lt;br /&gt;
#name&lt;br /&gt;
#text&lt;br /&gt;
#course&lt;br /&gt;
#assignment&lt;br /&gt;
*Modified files&lt;br /&gt;
#app/models/questionnaire_node.rb&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Review&amp;lt;/b&amp;gt;&lt;br /&gt;
*Search fields&lt;br /&gt;
#team&lt;br /&gt;
#text&lt;br /&gt;
#min_score&lt;br /&gt;
#max_score&lt;br /&gt;
*Modified files&lt;br /&gt;
#app/views/review_mapping/_searchbox.html.erb&lt;br /&gt;
#app/controllers/review_mapping_controller.rb&lt;br /&gt;
&lt;br /&gt;
==Database Design==&lt;br /&gt;
Below is the simplified version of the ER diagram which displays the relationships between the entity sets. Team_users and assignment_questionnaires are many to many relationships which are implemented in table format as show below.&lt;br /&gt;
&lt;br /&gt;
[[File:ER diagram.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Relevant Tables===&lt;br /&gt;
[[File:User table.png|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Screen Shot 2018-11-20 at 11.42.06 PM.png|center]]&lt;br /&gt;
&lt;br /&gt;
==Test Plan: ==&lt;br /&gt;
=== Automated Tests ===&lt;br /&gt;
Automated tests in RSpec will be added as we implement the search functionality for each modified file. Most of the tests added will be unit tests that cover the use cases for each flow and changes made in the model as per the requirement description.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Test Details:====&lt;br /&gt;
=====User Model ( spec/models/user_spec.rb )=====&lt;br /&gt;
# Search by user name&lt;br /&gt;
# Search by user name that does not exist&lt;br /&gt;
# Search by user email&lt;br /&gt;
# Search by user email that does not exist&lt;br /&gt;
# Search by user email containing a substring&lt;br /&gt;
# Search by user full name&lt;br /&gt;
# Search by user full name is empty&lt;br /&gt;
# Search by user name and email&lt;br /&gt;
# Search for assignments participated&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=====Assignment Model ( spec/models/assignment_spec.rb )=====&lt;br /&gt;
# Search by user name&lt;br /&gt;
# Search by institution&lt;br /&gt;
# Search by creation date&lt;br /&gt;
# Search by updated date&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=====Rubrics=====&lt;br /&gt;
# Search by name&lt;br /&gt;
# Search by courses used in&lt;br /&gt;
# Search by assignments used in&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=====Reviews=====&lt;br /&gt;
# Search all reviews of a particular team’s work for particular scores or text strings.  &lt;br /&gt;
# Search by score&lt;br /&gt;
# Search by text comment length&lt;br /&gt;
# Search by reviewer and reviewee&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Manual Tests ===&lt;br /&gt;
=====Search for User=====&lt;br /&gt;
# Setup: create a user with name=&amp;quot;student&amp;quot; and userId=&amp;quot;5000&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
# Action: Instructor clicks on manage - &amp;gt; users -&amp;gt; in textbox enters name=&amp;quot;student&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
# Response: Relevant details of student, name=&amp;quot;student&amp;quot; is displayed&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
# Action: Instructor clicks on manage - &amp;gt; users -&amp;gt; advanced search-&amp;gt;clicks on checkbox student id and enters &amp;quot;5000&amp;quot; and click &amp;quot;ok&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
# Response: Relevant details of student, name=&amp;quot;student&amp;quot; is displayed&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=====Search for Assignments=====&lt;br /&gt;
# Setup create an assignment with name=&amp;quot;assignment&amp;quot; and set a due date&amp;lt;br&amp;gt;&lt;br /&gt;
# Action : Instructor clicks on Manage -&amp;gt; Assignments, in textbox enter &amp;quot;assignment&amp;quot; in relevant tab&amp;lt;br&amp;gt; &lt;br /&gt;
# Response : Relevant assignment should be displayed&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
# Action : Instructor clicks on Manage -&amp;gt; Assignments-&amp;gt; drop down and apply filters for due date and enter date and click &amp;quot;ok&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
# Response : Relevant assignments should be displayed&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=====Search for Questionnaires=====&lt;br /&gt;
# Setup : Create a Questionnaire, add questions to it&amp;lt;br&amp;gt;&lt;br /&gt;
# Action : Log in as instructor,  Manage -&amp;gt; Questionnaires, in text box enter text&amp;lt;br&amp;gt;&lt;br /&gt;
# Response : Questionnaires matching text are shown&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
# Action : Log in as instructor,  Manage -&amp;gt; Questionnaires, click advanced search and check creation date and enter value&amp;lt;br&amp;gt;&lt;br /&gt;
# Response : Questionnaires matching text are shown&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=====Search for Reviews=====&lt;br /&gt;
# Setup : Setup review for an assignment, login as student and then add review &amp;lt;br&amp;gt;&lt;br /&gt;
# Action : Log in as instructor, Manage -&amp;gt; Assignments, Click on Review Report icon on corresponding assignment&amp;lt;br&amp;gt;&lt;br /&gt;
# Result : Review should be seen&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
# Action : Click Advanced search, check review by text  and enter text&amp;lt;br&amp;gt;  &lt;br /&gt;
# Result : Matching review should be visible&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Akariya</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:ERD1.png&amp;diff=128889</id>
		<title>File:ERD1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:ERD1.png&amp;diff=128889"/>
		<updated>2019-11-12T01:08:10Z</updated>

		<summary type="html">&lt;p&gt;Akariya: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Akariya</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1992._Add_cake_type_to_rubrics_design&amp;diff=128888</id>
		<title>CSC/ECE 517 Fall 2019 - E1992. Add cake type to rubrics design</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1992._Add_cake_type_to_rubrics_design&amp;diff=128888"/>
		<updated>2019-11-12T01:07:08Z</updated>

		<summary type="html">&lt;p&gt;Akariya: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Database Design&lt;br /&gt;
Below is the simplified version of the ER diagram which displays the relationships between the entity sets. &lt;br /&gt;
&lt;br /&gt;
[[File:ER1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Relevant Tables&lt;br /&gt;
&lt;br /&gt;
[[File:ER2.png]]&lt;br /&gt;
&lt;br /&gt;
Proposed Code Changes&lt;br /&gt;
&lt;br /&gt;
Edit questionnaire/_questionnaire.html.erb: Add Cake to the list question types&lt;br /&gt;
&lt;br /&gt;
Create cake.rb model that inherits from ScoredQuestion model. Add method to calculate currently added weights of the cake to this model.&lt;br /&gt;
&lt;br /&gt;
Edit questionnaires_controller.rb, under “add_new_questions” method, adding a cake type and handle the changes. &lt;br /&gt;
&lt;br /&gt;
Edit assignments/edit/_review_strategy.html.erb and add ‘Allow teammate self-review’ to the list of options.&lt;br /&gt;
&lt;br /&gt;
Edit student_teams/view and add reviewer to list of displayed teammates and mark that item as self review in the view.&lt;br /&gt;
&lt;br /&gt;
Edit response/response.html.erb and add cake type questions to the displayed response.&lt;br /&gt;
&lt;br /&gt;
Edit response/view.html.erb and add cake type questions to the displayed response.&lt;/div&gt;</summary>
		<author><name>Akariya</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:ER2.png&amp;diff=128885</id>
		<title>File:ER2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:ER2.png&amp;diff=128885"/>
		<updated>2019-11-12T01:06:00Z</updated>

		<summary type="html">&lt;p&gt;Akariya: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Akariya</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1939._OSS_Project_Juniper:_Bookmark_enhancements&amp;diff=127422</id>
		<title>CSC/ECE 517 Fall 2019 - E1939. OSS Project Juniper: Bookmark enhancements</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1939._OSS_Project_Juniper:_Bookmark_enhancements&amp;diff=127422"/>
		<updated>2019-11-06T21:45:43Z</updated>

		<summary type="html">&lt;p&gt;Akariya: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Expertiza ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an educational web application created and maintained by the joint efforts of the students and the faculty at NCSU. It’s an open source project developed on Ruby on Rails platform and the code is available on Github. It allows students to review each other’s work and improve their work upon this feedback. Students and Instructors (including TA's) use this application though their credentials. Instructors can add new projects, assignments etc as well edit the previous ones and at a later stage can see the student submission and grade them. They can even put a time limit (deadline) for submitting the assignment. Students can form teams for the projects, submit their work through handles (Wiki page, link to a video etc). Students can even review their teammates and other peers, as well give them any suggestions if required&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Review Assessment Credentials &lt;br /&gt;
'''&lt;br /&gt;
The credentials for Peer review assessment for Bookmark Enhancement project are&lt;br /&gt;
Instructor Login: username =&amp;gt; instructor6	password=&amp;gt;password&lt;br /&gt;
&lt;br /&gt;
Accounts for Impersonation: username =&amp;gt; student6340, student6341&lt;br /&gt;
Assignment =&amp;gt; Exercises, CSC456, Fall2015&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Bookmark Functionality  in Expertiza =====&lt;br /&gt;
&lt;br /&gt;
Expertiza features the bookmarking functionality which allows users to help the author of the project by suggesting insights. Let’s say there are five topics that I’m interested in and would like to contribute to, but I can only choose one.  Well, for the other topics, I’m allowed to submit hyperlinks to pages that I think would help the author do the work.  On each line of the signup sheet are two icons, one for adding a bookmark to the topic, and another for viewing bookmarks on the topic. The bookmarks are attached to each project topic and user can suggest by filling up a questionnaire. As soon as a user creates a bookmark, the project author is able to view all the bookmarks that are created for his project. The author can give a feedback on the bookmark that he has received which helps even the user know the usefuless of his bookmark. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bookmark Enhancements==&lt;br /&gt;
&lt;br /&gt;
The Bookmark functionality in expertiza is in its nascent stage which allows user to provide feedback on the projects that he is interested in. It also allows the author to rate the bookmarks that he has received for his project. Project Juniper Bookmark Enhancements is an attempt to make the bookmarks more user-friendly and credible. We have improved the functionality for an author to descriptively evaluate the bookmark  that he has received on his project using rubrics as set by the instructor.&lt;br /&gt;
&lt;br /&gt;
=== Bugs that were identified  === &lt;br /&gt;
&lt;br /&gt;
*Fixing the “Back” button &lt;br /&gt;
*Validations on the form for adding bookmarks were missing&lt;br /&gt;
*Allowed the creator of bookmark to rate himself  and fixed the logic for calculating average rating&lt;br /&gt;
*Bookmark Rating Questionnaire could not be created&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Design and Implementation ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Fixing the Back button:'''&lt;br /&gt;
When user visits “Create Bookmarks&amp;quot; and  &amp;quot;View Bookmarks&amp;quot;, the back button was not functional which refrained the user from going back to the Signup-sheet. Now this issue has been fixed which in future will allow to any contributor to use this back functionality.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Earlier: [[File: Backbutton_old.png ]]&lt;br /&gt;
&lt;br /&gt;
Files Changed:&lt;br /&gt;
:app/controllers/bookmarks_controller.rb &lt;br /&gt;
  def list&lt;br /&gt;
    @participant = Participant.where(user_id: session[:user].id).first&lt;br /&gt;
    @bookmarks = Bookmark.where(topic_id: params[:id])	   &lt;br /&gt;
    @topic = SignUpTopic.find(params[:id])	   &lt;br /&gt;
  end	 &lt;br /&gt;
&lt;br /&gt;
  def new	 &lt;br /&gt;
    @participant = Participant.where(user_id: session[:user].id).first&lt;br /&gt;
    @topic = SignUpTopic.find(params[:id])	    &lt;br /&gt;
    @bookmark = Bookmark.new	 &lt;br /&gt;
  end	 &lt;br /&gt;
&lt;br /&gt;
:app/views/bookmarks/list.html.erb &amp;lt;br/&amp;gt;&lt;br /&gt;
   &amp;lt;%= link_to 'Back', :controller=&amp;gt; 'sign_up_sheet', :action=&amp;gt;'list', :id =&amp;gt; @participant.id, :assignment_id =&amp;gt; @topic.assignment_id %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The changed code can be found  &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://github.com/expertiza/expertiza/pull/1540/commits/aad5803b1e2bb49c17cff082d9d0661eb5e5f4aa?file-filters%5B%5D=.erb&amp;amp;file-filters%5B%5D=.rb&amp;amp;file-filters%5B%5D=No+extension#diff-dfb6f1f1b681adb17aeaef26d931880b here]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The screencast can be found &amp;lt;span class = &amp;quot;plainlinks&amp;quot;&amp;gt;[https://drive.google.com/file/d/1CqxFbLjmh3nQ-gi4PFZVJzIok_-xrpJU/view?usp=sharing here:]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Bookmark Validations '''&lt;br /&gt;
The form for creating a new bookmark allowed malformed URLs to be entered into the system. Now, the bookmarks can be added only when user enters legitimate URL as well as all the fields are completely filled. Validations were added as a security measure to prevent misuse.&lt;br /&gt;
&lt;br /&gt;
Files Changed:&lt;br /&gt;
:app/controllers/bookmarks_controller.rb&lt;br /&gt;
&lt;br /&gt;
     def update&lt;br /&gt;
     ....&lt;br /&gt;
     begin&lt;br /&gt;
      @bookmark.update_attributes!(url: params[:bookmark][:url], title: params[:bookmark][:title], description: params[:bookmark][:description])&lt;br /&gt;
      ExpertizaLogger.info LoggerMessage.new(controller_name, session[:user].name, 'Your bookmark has been successfully updated!', request)&lt;br /&gt;
      flash[:success] = 'Your bookmark has been successfully updated!'&lt;br /&gt;
    rescue StandardError&lt;br /&gt;
      ExpertizaLogger.info LoggerMessage.new(controller_name, session[:user].name, $ERROR_INFO.to_s, request)&lt;br /&gt;
      flash[:error] = 'Bookmark could not be updated: ' + $ERROR_INFO.to_s&lt;br /&gt;
    end&lt;br /&gt;
    ....&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
:app/models/bookmark.rb&lt;br /&gt;
     class Bookmark &amp;lt; ActiveRecord::Base&lt;br /&gt;
     ....&lt;br /&gt;
     # validates if the url provided is of a valid format&lt;br /&gt;
     validates_format_of :url, :multiline =&amp;gt; true, :with =&amp;gt; /^(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/, :on =&amp;gt; :create&lt;br /&gt;
     ....&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
The changed code can be found &amp;lt;span class = &amp;quot;plainlinks&amp;quot;&amp;gt;[https://github.com/expertiza/expertiza/pull/1540/commits/4f70a3dc25dddf04c671186d52f0942b744d91da here:]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The screencast can be found &amp;lt;span class = &amp;quot;plainlinks&amp;quot;&amp;gt;[https://drive.google.com/file/d/14A9e76pcd6HoNEYFzPrfH4xR3HBjps-c/view?usp=sharing here:]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Self Rating of Bookmarks and average calculation'''&lt;br /&gt;
When reviewing the bookmark, the average rating for that bookmark shown was calculated wrongly and showed average rating for the bookmark that wasn’t reviewed. Also, the user who created the bookmark could rate himself. &lt;br /&gt;
Now, the user cannot rate his own bookmarks and the average rating is calculated perfectly after one or more people have reviewed it.&lt;br /&gt;
&lt;br /&gt;
Files Changed:&lt;br /&gt;
:app/models/bookmark_rating.rb&lt;br /&gt;
   &lt;br /&gt;
    # Calculates the rating of a bookmark when review type is a rubric and not a dropdown&lt;br /&gt;
   def average_based_on_rubric(bookmark)&lt;br /&gt;
       if bookmark.nil?&lt;br /&gt;
          0&lt;br /&gt;
       else&lt;br /&gt;
          assignment = SignUpTopic.find(bookmark.topic_id).assignment&lt;br /&gt;
          questions = assignment.questionnaires.where(type: 'BookmarkRatingQuestionnaire').flat_map(&amp;amp;:questions)&lt;br /&gt;
          responses = BookmarkRatingResponseMap.where(&lt;br /&gt;
              reviewed_object_id: assignment.id,&lt;br /&gt;
              reviewee_id: bookmark.id&lt;br /&gt;
          ).flat_map {|r| Response.where(map_id: r.id) }&lt;br /&gt;
          scores = Answer.compute_scores(responses, questions)&lt;br /&gt;
          if scores[:avg].nil?&lt;br /&gt;
            0&lt;br /&gt;
           else&lt;br /&gt;
            (scores[:avg] * 5.0 / 100.0).round(2)&lt;br /&gt;
          end&lt;br /&gt;
        end&lt;br /&gt;
      end&lt;br /&gt;
   &lt;br /&gt;
   # fetches the previously added responses to rate a bookmark   &lt;br /&gt;
   def self.get_bookmark_rating_response_map(bookmark, current_user)&lt;br /&gt;
      BookmarkRatingResponseMap.find_by(&lt;br /&gt;
          reviewed_object_id: SignUpTopic.find(bookmark.topic_id).assignment.id,&lt;br /&gt;
          reviewer_id: AssignmentParticipant.find_by(user_id: current_user.id).id,&lt;br /&gt;
          reviewee_id: bookmark.id&lt;br /&gt;
        )&lt;br /&gt;
&lt;br /&gt;
:app/views/bookmarks/list.html.erb&lt;br /&gt;
       ....&lt;br /&gt;
            &amp;lt;td&amp;gt;&amp;lt;a href=&amp;lt;%= &amp;quot;http://#{bookmark.url}&amp;quot;%&amp;gt; target='_blank'&amp;gt;&amp;lt;%=bookmark.title %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;!--Set maximum length of bookmark description and keep description in one line.--&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;%=truncate(bookmark.description, length: 100) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;!--Average rating score--&amp;gt;&lt;br /&gt;
        &amp;lt;% @bookmark_ratings = BookmarkRating.where(bookmark_id: bookmark.id) %&amp;gt;&lt;br /&gt;
        &amp;lt;!--Self rated bookmark should not be counted in average rating.--&amp;gt;&lt;br /&gt;
        &amp;lt;% @bookmark_ratings.to_a.reject! {|bookmark_rating| bookmark_rating.user_id == Bookmark.find(bookmark_rating.bookmark_id).user_id} %&amp;gt;&lt;br /&gt;
        &amp;lt;% sum = 0 %&amp;gt;&lt;br /&gt;
        &amp;lt;% @bookmark_ratings.each do |bookmark_rating| %&amp;gt;&lt;br /&gt;
          &amp;lt;% sum += bookmark_rating.rating %&amp;gt;&lt;br /&gt;
        &amp;lt;% end %&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
          &amp;lt;% if has_dropdown?(@topic) %&amp;gt;&lt;br /&gt;
            &amp;lt;% if @bookmark_ratings.size &amp;gt; 0 %&amp;gt;&lt;br /&gt;
              &amp;lt;%= (sum * 1.0 / @bookmark_ratings.size).round(1) %&amp;gt;&lt;br /&gt;
            &amp;lt;% else %&amp;gt;&lt;br /&gt;
              &amp;lt;%= '-' %&amp;gt;&lt;br /&gt;
            &amp;lt;% end %&amp;gt;&lt;br /&gt;
          &amp;lt;% else %&amp;gt;&lt;br /&gt;
            &amp;lt;!-- Compute average rating based on rubrics --&amp;gt;&lt;br /&gt;
            &amp;lt;% avg = BookmarkRating.average_based_on_rubric(bookmark) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= avg == 0 ? '-' : avg %&amp;gt;&lt;br /&gt;
          &amp;lt;% end %&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
         &amp;lt;!-- Only allow to rate a bookmark which is not uploaded by the current user --&amp;gt;&lt;br /&gt;
          &amp;lt;% if bookmark.user.id != current_user.id %&amp;gt;&lt;br /&gt;
            &amp;lt;% if has_dropdown?(@topic) %&amp;gt;&lt;br /&gt;
              &amp;lt;% if BookmarkRating.exists?(bookmark_id: bookmark.id, user_id: session[:user].id) %&amp;gt;&lt;br /&gt;
                &amp;lt;% rating = BookmarkRating.where(bookmark_id: bookmark.id, user_id: session[:user].id).first.rating.to_s %&amp;gt;&lt;br /&gt;
              &amp;lt;% else %&amp;gt;&lt;br /&gt;
                &amp;lt;% rating = &amp;quot;0&amp;quot; %&amp;gt;&lt;br /&gt;
              &amp;lt;% end %&amp;gt;&lt;br /&gt;
              &amp;lt;%= form_tag :action =&amp;gt; &amp;quot;save_bookmark_rating_score&amp;quot;, :id =&amp;gt; bookmark.id do %&amp;gt;&lt;br /&gt;
                &amp;lt;% params[:rating] = rating %&amp;gt;&lt;br /&gt;
                &amp;lt;select id=&amp;lt;%= bookmark.id %&amp;gt; name=&amp;quot;rating&amp;quot; style=&amp;quot;font-size: 10px&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;% (0..5).each do |i| %&amp;gt;&lt;br /&gt;
                    &amp;lt;option value=&amp;lt;%= i.to_s %&amp;gt;&lt;br /&gt;
                              &amp;lt;% if params[:rating] == i.to_s %&amp;gt;&lt;br /&gt;
                                selected&lt;br /&gt;
                       &amp;lt;% end %&amp;gt;&lt;br /&gt;
                     &amp;gt;&lt;br /&gt;
                       &amp;lt;%= i.to_s %&amp;gt;&lt;br /&gt;
                     &amp;lt;/option&amp;gt;&lt;br /&gt;
                  &amp;lt;% end %&amp;gt;&lt;br /&gt;
                &amp;lt;/select&amp;gt;&lt;br /&gt;
                &amp;lt;% if BookmarkRating.where(bookmark_id: bookmark.id, user_id: session[:user].id).first.blank? %&amp;gt;&lt;br /&gt;
                  &amp;lt;%= button_tag &amp;quot;Rate&amp;quot;, {:id=&amp;gt;'button'+bookmark.id.to_s,:style=&amp;gt;&amp;quot;font-size:10px; display:none;&amp;quot;} %&amp;gt;&lt;br /&gt;
                &amp;lt;% else %&amp;gt;&lt;br /&gt;
                  &amp;lt;%= button_tag &amp;quot;Update&amp;quot;, {:id=&amp;gt;'button'+bookmark.id.to_s,:style=&amp;gt;&amp;quot;font-size:10px; display:none;&amp;quot;} %&amp;gt;&lt;br /&gt;
                &amp;lt;% end %&amp;gt;&lt;br /&gt;
              &amp;lt;% end %&amp;gt;&lt;br /&gt;
            &amp;lt;% else %&amp;gt;&lt;br /&gt;
              &amp;lt;!-- This will be used to show the rubric --&amp;gt;&lt;br /&gt;
              &amp;lt;% bookmark_rating_response_map = BookmarkRating.get_bookmark_rating_response_map(bookmark, current_user) %&amp;gt;&lt;br /&gt;
              &amp;lt;% if bookmark_rating_response_map.nil? || bookmark_rating_response_map.response.size == 0 %&amp;gt;&lt;br /&gt;
                &amp;lt;%= link_to &amp;quot;Begin&amp;quot;, :action =&amp;gt; &amp;quot;new_bookmark_review&amp;quot;, :id =&amp;gt; bookmark.id %&amp;gt;&lt;br /&gt;
              &amp;lt;% else %&amp;gt;&lt;br /&gt;
                &amp;lt;%= link_to &amp;quot;View&amp;quot;, view_response_index_path(id: bookmark_rating_response_map.response.first.response_id) %&amp;gt;&lt;br /&gt;
                &amp;lt;%= link_to &amp;quot;Edit&amp;quot;, edit_response_path(id: bookmark_rating_response_map.response.first.response_id, return: 'bookmark') %&amp;gt;&lt;br /&gt;
              &amp;lt;% end %&amp;gt;&lt;br /&gt;
            &amp;lt;% end %&amp;gt;&lt;br /&gt;
          &amp;lt;% end %&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;% if bookmark.user_id == session[:user].id %&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= link_to 'Edit', :action =&amp;gt; 'edit', :id =&amp;gt; bookmark.id %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= link_to 'Destroy', bookmark, :confirm =&amp;gt; &amp;quot;Delete bookmark \&amp;quot;#{bookmark.title}\&amp;quot;?&amp;quot;, :method =&amp;gt; :delete %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;% end %&amp;gt;&lt;br /&gt;
           ....&lt;br /&gt;
:app/controllers/bookmarks_controller.rb&lt;br /&gt;
# method to check if a dropdown is used for rating bookmarks&lt;br /&gt;
   def has_dropdown?(topic)&lt;br /&gt;
     bookmark_rating_questionnaire = topic.assignment.questionnaires.where(type: 'BookmarkRatingQuestionnaire')&lt;br /&gt;
     if bookmark_rating_questionnaire[0].nil?&lt;br /&gt;
       true&lt;br /&gt;
     else&lt;br /&gt;
       false&lt;br /&gt;
     end&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
The changed code can be found &amp;lt;span class = &amp;quot;plainlinks&amp;quot;&amp;gt;[https://github.com/expertiza/expertiza/pull/1540/commits/3ad53b0cbd9b06f4a3a3ff85311c38f5b5672970?file-filters%5B%5D= here:]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Review bookmark using rubric functionality'''&lt;br /&gt;
The bookmark functionality earlier only allowed for the users to rate the bookmark and not give feedback about the the quality of the Bookmark. Now, feature is added so that the instructor can decide whether to allow for bookmark to be just rated or a have a rubric . The instructor can customize the questions in the rubric.  The rubric once created by the instructor can be used for multiple assignments and also multiple rubrics can be created for different types of assignments. &lt;br /&gt;
&lt;br /&gt;
Files Modified&lt;br /&gt;
:app/controllers/bookmarks_controller.rb&lt;br /&gt;
    &lt;br /&gt;
    ..... &lt;br /&gt;
    # Saves the responses to the bookmark review questionnaire.&lt;br /&gt;
    # If a previous response exists it updates it.&lt;br /&gt;
    def new_bookmark_review&lt;br /&gt;
        bookmark = Bookmark.find(params[:id])&lt;br /&gt;
        topic = SignUpTopic.find(bookmark.topic_id)&lt;br /&gt;
        assignment_participant = AssignmentParticipant.find_by(user_id: current_user.id)&lt;br /&gt;
        response_map = BookmarkRatingResponseMap.where(&lt;br /&gt;
          reviewed_object_id: topic.assignment.id,&lt;br /&gt;
          reviewer_id: assignment_participant.id,&lt;br /&gt;
          reviewee_id: bookmark.id&lt;br /&gt;
        ).first&lt;br /&gt;
        if response_map.nil?&lt;br /&gt;
          response_map = BookmarkRatingResponseMap.create(&lt;br /&gt;
            reviewed_object_id: topic.assignment.id,&lt;br /&gt;
            reviewer_id: assignment_participant.id,&lt;br /&gt;
            reviewee_id: bookmark.id&lt;br /&gt;
          )&lt;br /&gt;
        end&lt;br /&gt;
        redirect_to new_response_url(id: response_map.id, return: 'bookmark')&lt;br /&gt;
      end&lt;br /&gt;
      .....&lt;br /&gt;
&lt;br /&gt;
:app/controllers/questionnaires_controller.rb&lt;br /&gt;
&lt;br /&gt;
    if %w[AuthorFeedback CourseSurvey TeammateReview GlobalSurvey AssignmentSurvey BookmarkRating].include?(display_type)&lt;br /&gt;
          display_type = (display_type.split /(?=[A-Z])/).join(&amp;quot;%&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
        @questionnaire.display_type = display_type&lt;br /&gt;
&lt;br /&gt;
:app/controllers/response_controller.rb&lt;br /&gt;
&lt;br /&gt;
        when &amp;quot;bookmark&amp;quot;&lt;br /&gt;
            bookmark = Bookmark.find(@map.response_map.reviewee_id)&lt;br /&gt;
             redirect_to controller: 'bookmarks', action: 'list', id: bookmark.topic_id&lt;br /&gt;
     &lt;br /&gt;
       def set_questionnaire_for_new_response&lt;br /&gt;
           .&lt;br /&gt;
           .&lt;br /&gt;
              &amp;quot;GlobalSurveyResponseMap&amp;quot;,&lt;br /&gt;
              &amp;quot;BookmarkRatingResponseMap&amp;quot;&lt;br /&gt;
              @questionnaire = @map.questionnaire&lt;br /&gt;
           end&lt;br /&gt;
       end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The screencast can be found &amp;lt;span class = &amp;quot;plainlinks&amp;quot;&amp;gt;[https://drive.google.com/file/d/1W5xQCox-p_njQt_t8-yVkhn3B0HalKGk/view?usp=sharing here:]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testing  Plan ==&lt;br /&gt;
&lt;br /&gt;
===Testing From UI ===&lt;br /&gt;
&lt;br /&gt;
* Enable Bookmarks&lt;br /&gt;
# After logging in as instructor, go to Manage &amp;gt; Assignments &lt;br /&gt;
# Select Edit under Actions for assignment&lt;br /&gt;
# Under Topics Tab select 'Allow participants to create bookmarks?' to allow bookmarks&lt;br /&gt;
# Go to Rubrics tab, under 'Bookmark Rating' select the Bookmark review questionnaire to use the rubric for reviewing the bookmarks , select None for dropdown. &lt;br /&gt;
&lt;br /&gt;
'''Note''': When 'Bookmark Rating' is 'None', the error the error 'You did not specify all the necessary rubrics. You need [BookmarkRating] of assignment Exercises before saving the assignment. You can assign rubrics here.' is out of scope of the current project and the error can safely be ignored from point of view of this project&lt;br /&gt;
'&lt;br /&gt;
* Fixing the back Button &amp;amp; Validations&lt;br /&gt;
#     Log in as an instructor and impersonate as a student using the credentials given above&lt;br /&gt;
#	Select ‘Exercises’ assignment and go to the Signup sheet&lt;br /&gt;
#	We can see a list of projects with 2 columns to add or remove the Bookmark, select any of them&lt;br /&gt;
#	You’ll be redirected to the corresponding page where the back button will be visible&lt;br /&gt;
#      Select add bookmark and the form can be tested for Validations.   &lt;br /&gt;
&lt;br /&gt;
*Create new Bookmark Rating Rubric&lt;br /&gt;
# As an instructor, go to Manage&amp;gt;Questionnaires and select Bookmark Rating field&lt;br /&gt;
#Create a new rubric with required details&lt;br /&gt;
# Start adding questions. This can be done by manually entering into the system or importing Questionnaire.&lt;br /&gt;
&lt;br /&gt;
*View Bookmarks&lt;br /&gt;
&lt;br /&gt;
#	Log in as an instructor and impersonate as user using the credentials mentioned above and then select assignment &amp;quot;Exercises&amp;quot;&lt;br /&gt;
#     Add bookmarks to other topics.&lt;br /&gt;
#	The owner of that project should be able to see all the bookmarks created for his project and can rate the bookmark through the way instructor has defined it (rating or rubric).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing with RSpec ===&lt;br /&gt;
The current version of expertiza did not have any test for the BookmarksController and the Bookmarks model. Using the test driven development(TDD) approach, we have added an exhaustive set of RSPEC tests for BookmarksController, to test all the modifications we have done to the code of the controller class. We have also added unit tests to the bookmarks model. The tests can be executed using the &amp;quot;bundle exec rspec filename&amp;quot; command as shown below.&lt;br /&gt;
&lt;br /&gt;
   user-expertiza $bundle exec rspec spec_file_path&lt;br /&gt;
   [Coveralls] Set up the SimpleCov formatter.&lt;br /&gt;
   [Coveralls] Using SimpleCov's 'rails' settings.&lt;br /&gt;
   Randomized with seed 5067&lt;br /&gt;
   ......................&lt;br /&gt;
   Finished in 1 minute 50.34 seconds (files took 10.6 seconds to load)&lt;br /&gt;
   22 examples, 0 failures&lt;br /&gt;
   Randomized with seed 5067&lt;br /&gt;
&lt;br /&gt;
==Deployment==&lt;br /&gt;
This application with the mentioned changes have been deployed on VCL and can be found at [http://152.46.19.205:8080 http://152.46.19.205:8080]&lt;br /&gt;
&lt;br /&gt;
== Future Scope ==&lt;br /&gt;
* Giving credit to the author of the bookmark for his contribution&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#Github Link: https://github.com/srujana13/expertiza &lt;br /&gt;
#Pull Request: https://github.com/expertiza/expertiza/pull/1540/&lt;br /&gt;
#http://wiki.expertiza.ncsu.edu/index.php/E1830_OSS_Project_Juniper:_Bookmark_enhancements&lt;br /&gt;
# Expertiza on Github https://github.com/expertiza/expertiza&lt;br /&gt;
&lt;br /&gt;
==Contributors==&lt;br /&gt;
#Tanvi Pandit (tmpandi2@ncsu.edu)&lt;br /&gt;
#Abhirav Kariya (akariya@ncsu.edu)&lt;br /&gt;
#Srujana Rachakonda (srachak@ncsu.edu)&lt;br /&gt;
#Mentor Edward Gehringer  (efg@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Akariya</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1939._OSS_Project_Juniper:_Bookmark_enhancements&amp;diff=127419</id>
		<title>CSC/ECE 517 Fall 2019 - E1939. OSS Project Juniper: Bookmark enhancements</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1939._OSS_Project_Juniper:_Bookmark_enhancements&amp;diff=127419"/>
		<updated>2019-11-06T21:42:32Z</updated>

		<summary type="html">&lt;p&gt;Akariya: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Expertiza ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an educational web application created and maintained by the joint efforts of the students and the faculty at NCSU. It’s an open source project developed on Ruby on Rails platform and the code is available on Github. It allows students to review each other’s work and improve their work upon this feedback. Students and Instructors (including TA's) use this application though their credentials. Instructors can add new projects, assignments etc as well edit the previous ones and at a later stage can see the student submission and grade them. They can even put a time limit (deadline) for submitting the assignment. Students can form teams for the projects, submit their work through handles (Wiki page, link to a video etc). Students can even review their teammates and other peers, as well give them any suggestions if required&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Review Assessment Credentials &lt;br /&gt;
'''&lt;br /&gt;
The credentials for Peer review assessment for Bookmark Enhancement project are&lt;br /&gt;
Instructor Login: username =&amp;gt; instructor6	password=&amp;gt;password&lt;br /&gt;
&lt;br /&gt;
Accounts for Impersonation: username =&amp;gt; student6340, student6341&lt;br /&gt;
Assignment =&amp;gt; Exercises, CSC456, Fall2015&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Bookmark Functionality  in Expertiza =====&lt;br /&gt;
&lt;br /&gt;
Expertiza features the bookmarking functionality which allows users to help the author of the project by suggesting insights. Let’s say there are five topics that I’m interested in and would like to contribute to, but I can only choose one.  Well, for the other topics, I’m allowed to submit hyperlinks to pages that I think would help the author do the work.  On each line of the signup sheet are two icons, one for adding a bookmark to the topic, and another for viewing bookmarks on the topic. The bookmarks are attached to each project topic and user can suggest by filling up a questionnaire. As soon as a user creates a bookmark, the project author is able to view all the bookmarks that are created for his project. The author can give a feedback on the bookmark that he has received which helps even the user know the usefuless of his bookmark. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bookmark Enhancements==&lt;br /&gt;
&lt;br /&gt;
The Bookmark functionality in expertiza is in its nascent stage which allows user to provide feedback on the projects that he is interested in. It also allows the author to rate the bookmarks that he has received for his project. Project Juniper Bookmark Enhancements is an attempt to make the bookmarks more user-friendly and credible. We have improved the functionality for an author to descriptively evaluate the bookmark  that he has received on his project using rubrics as set by the instructor.&lt;br /&gt;
&lt;br /&gt;
=== Bugs that were identified  === &lt;br /&gt;
&lt;br /&gt;
*Fixing the “Back” button &lt;br /&gt;
*Validations on the form for adding bookmarks were missing&lt;br /&gt;
*Allowed the creator of bookmark to rate himself  and fixed the logic for calculating average rating&lt;br /&gt;
*Bookmark Rating Questionnaire could not be created&lt;br /&gt;
*Functionality for review of  bookmarks using rubric&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Design and Implementation ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Fixing the Back button:'''&lt;br /&gt;
When user visits “Create Bookmarks&amp;quot; and  &amp;quot;View Bookmarks&amp;quot;, the back button was not functional which refrained the user from going back to the Signup-sheet. Now this issue has been fixed which in future will allow to any contributor to use this back functionality.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Earlier: [[File: Backbutton_old.png ]]&lt;br /&gt;
&lt;br /&gt;
Files Changed:&lt;br /&gt;
:app/controllers/bookmarks_controller.rb &lt;br /&gt;
  def list&lt;br /&gt;
    @participant = Participant.where(user_id: session[:user].id).first&lt;br /&gt;
    @bookmarks = Bookmark.where(topic_id: params[:id])	   &lt;br /&gt;
    @topic = SignUpTopic.find(params[:id])	   &lt;br /&gt;
  end	 &lt;br /&gt;
&lt;br /&gt;
  def new	 &lt;br /&gt;
    @participant = Participant.where(user_id: session[:user].id).first&lt;br /&gt;
    @topic = SignUpTopic.find(params[:id])	    &lt;br /&gt;
    @bookmark = Bookmark.new	 &lt;br /&gt;
  end	 &lt;br /&gt;
&lt;br /&gt;
:app/views/bookmarks/list.html.erb &amp;lt;br/&amp;gt;&lt;br /&gt;
   &amp;lt;%= link_to 'Back', :controller=&amp;gt; 'sign_up_sheet', :action=&amp;gt;'list', :id =&amp;gt; @participant.id, :assignment_id =&amp;gt; @topic.assignment_id %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The changed code can be found  &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://github.com/expertiza/expertiza/pull/1540/commits/aad5803b1e2bb49c17cff082d9d0661eb5e5f4aa?file-filters%5B%5D=.erb&amp;amp;file-filters%5B%5D=.rb&amp;amp;file-filters%5B%5D=No+extension#diff-dfb6f1f1b681adb17aeaef26d931880b here]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The screencast can be found &amp;lt;span class = &amp;quot;plainlinks&amp;quot;&amp;gt;[https://drive.google.com/file/d/1CqxFbLjmh3nQ-gi4PFZVJzIok_-xrpJU/view?usp=sharing here:]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Bookmark Validations '''&lt;br /&gt;
The form for creating a new bookmark allowed malformed URLs to be entered into the system. Now, the bookmarks can be added only when user enters legitimate URL as well as all the fields are completely filled. Validations were added as a security measure to prevent misuse.&lt;br /&gt;
&lt;br /&gt;
Files Changed:&lt;br /&gt;
:app/controllers/bookmarks_controller.rb&lt;br /&gt;
&lt;br /&gt;
     def update&lt;br /&gt;
     ....&lt;br /&gt;
     begin&lt;br /&gt;
      @bookmark.update_attributes!(url: params[:bookmark][:url], title: params[:bookmark][:title], description: params[:bookmark][:description])&lt;br /&gt;
      ExpertizaLogger.info LoggerMessage.new(controller_name, session[:user].name, 'Your bookmark has been successfully updated!', request)&lt;br /&gt;
      flash[:success] = 'Your bookmark has been successfully updated!'&lt;br /&gt;
    rescue StandardError&lt;br /&gt;
      ExpertizaLogger.info LoggerMessage.new(controller_name, session[:user].name, $ERROR_INFO.to_s, request)&lt;br /&gt;
      flash[:error] = 'Bookmark could not be updated: ' + $ERROR_INFO.to_s&lt;br /&gt;
    end&lt;br /&gt;
    ....&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
:app/models/bookmark.rb&lt;br /&gt;
     class Bookmark &amp;lt; ActiveRecord::Base&lt;br /&gt;
     ....&lt;br /&gt;
     # validates if the url provided is of a valid format&lt;br /&gt;
     validates_format_of :url, :multiline =&amp;gt; true, :with =&amp;gt; /^(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/, :on =&amp;gt; :create&lt;br /&gt;
     ....&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
The changed code can be found &amp;lt;span class = &amp;quot;plainlinks&amp;quot;&amp;gt;[https://github.com/expertiza/expertiza/pull/1540/commits/4f70a3dc25dddf04c671186d52f0942b744d91da here:]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The screencast can be found &amp;lt;span class = &amp;quot;plainlinks&amp;quot;&amp;gt;[https://drive.google.com/file/d/14A9e76pcd6HoNEYFzPrfH4xR3HBjps-c/view?usp=sharing here:]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Self Rating of Bookmarks and average calculation'''&lt;br /&gt;
When reviewing the bookmark, the average rating for that bookmark shown was calculated wrongly and showed average rating for the bookmark that wasn’t reviewed. Also, the user who created the bookmark could rate himself. &lt;br /&gt;
Now, the user cannot rate his own bookmarks and the average rating is calculated perfectly after one or more people have reviewed it.&lt;br /&gt;
&lt;br /&gt;
Files Changed:&lt;br /&gt;
:app/models/bookmark_rating.rb&lt;br /&gt;
   &lt;br /&gt;
    # Calculates the rating of a bookmark when review type is a rubric and not a dropdown&lt;br /&gt;
   def average_based_on_rubric(bookmark)&lt;br /&gt;
       if bookmark.nil?&lt;br /&gt;
          0&lt;br /&gt;
       else&lt;br /&gt;
          assignment = SignUpTopic.find(bookmark.topic_id).assignment&lt;br /&gt;
          questions = assignment.questionnaires.where(type: 'BookmarkRatingQuestionnaire').flat_map(&amp;amp;:questions)&lt;br /&gt;
          responses = BookmarkRatingResponseMap.where(&lt;br /&gt;
              reviewed_object_id: assignment.id,&lt;br /&gt;
              reviewee_id: bookmark.id&lt;br /&gt;
          ).flat_map {|r| Response.where(map_id: r.id) }&lt;br /&gt;
          scores = Answer.compute_scores(responses, questions)&lt;br /&gt;
          if scores[:avg].nil?&lt;br /&gt;
            0&lt;br /&gt;
           else&lt;br /&gt;
            (scores[:avg] * 5.0 / 100.0).round(2)&lt;br /&gt;
          end&lt;br /&gt;
        end&lt;br /&gt;
      end&lt;br /&gt;
   &lt;br /&gt;
   # fetches the previously added responses to rate a bookmark   &lt;br /&gt;
   def self.get_bookmark_rating_response_map(bookmark, current_user)&lt;br /&gt;
      BookmarkRatingResponseMap.find_by(&lt;br /&gt;
          reviewed_object_id: SignUpTopic.find(bookmark.topic_id).assignment.id,&lt;br /&gt;
          reviewer_id: AssignmentParticipant.find_by(user_id: current_user.id).id,&lt;br /&gt;
          reviewee_id: bookmark.id&lt;br /&gt;
        )&lt;br /&gt;
&lt;br /&gt;
:app/views/bookmarks/list.html.erb&lt;br /&gt;
       ....&lt;br /&gt;
            &amp;lt;td&amp;gt;&amp;lt;a href=&amp;lt;%= &amp;quot;http://#{bookmark.url}&amp;quot;%&amp;gt; target='_blank'&amp;gt;&amp;lt;%=bookmark.title %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;!--Set maximum length of bookmark description and keep description in one line.--&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;%=truncate(bookmark.description, length: 100) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;!--Average rating score--&amp;gt;&lt;br /&gt;
        &amp;lt;% @bookmark_ratings = BookmarkRating.where(bookmark_id: bookmark.id) %&amp;gt;&lt;br /&gt;
        &amp;lt;!--Self rated bookmark should not be counted in average rating.--&amp;gt;&lt;br /&gt;
        &amp;lt;% @bookmark_ratings.to_a.reject! {|bookmark_rating| bookmark_rating.user_id == Bookmark.find(bookmark_rating.bookmark_id).user_id} %&amp;gt;&lt;br /&gt;
        &amp;lt;% sum = 0 %&amp;gt;&lt;br /&gt;
        &amp;lt;% @bookmark_ratings.each do |bookmark_rating| %&amp;gt;&lt;br /&gt;
          &amp;lt;% sum += bookmark_rating.rating %&amp;gt;&lt;br /&gt;
        &amp;lt;% end %&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
          &amp;lt;% if BookmarkRatingQuestionnaire.has_dropdown?(@topic) %&amp;gt;&lt;br /&gt;
            &amp;lt;% if @bookmark_ratings.size &amp;gt; 0 %&amp;gt;&lt;br /&gt;
              &amp;lt;%= (sum * 1.0 / @bookmark_ratings.size).round(1) %&amp;gt;&lt;br /&gt;
            &amp;lt;% else %&amp;gt;&lt;br /&gt;
              &amp;lt;%= '-' %&amp;gt;&lt;br /&gt;
            &amp;lt;% end %&amp;gt;&lt;br /&gt;
          &amp;lt;% else %&amp;gt;&lt;br /&gt;
            &amp;lt;!-- Compute average rating based on rubrics --&amp;gt;&lt;br /&gt;
            &amp;lt;% avg = BookmarkRating.average_based_on_rubric(bookmark) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= avg == 0 ? '-' : avg %&amp;gt;&lt;br /&gt;
          &amp;lt;% end %&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
         &amp;lt;!-- Only allow to rate a bookmark which is not uploaded by the current user --&amp;gt;&lt;br /&gt;
          &amp;lt;% if bookmark.user.id != current_user.id %&amp;gt;&lt;br /&gt;
            &amp;lt;% if BookmarkRatingQuestionnaire.has_dropdown?(@topic) %&amp;gt;&lt;br /&gt;
              &amp;lt;% if BookmarkRating.exists?(bookmark_id: bookmark.id, user_id: session[:user].id) %&amp;gt;&lt;br /&gt;
                &amp;lt;% rating = BookmarkRating.where(bookmark_id: bookmark.id, user_id: session[:user].id).first.rating.to_s %&amp;gt;&lt;br /&gt;
              &amp;lt;% else %&amp;gt;&lt;br /&gt;
                &amp;lt;% rating = &amp;quot;0&amp;quot; %&amp;gt;&lt;br /&gt;
              &amp;lt;% end %&amp;gt;&lt;br /&gt;
              &amp;lt;%= form_tag :action =&amp;gt; &amp;quot;save_bookmark_rating_score&amp;quot;, :id =&amp;gt; bookmark.id do %&amp;gt;&lt;br /&gt;
                &amp;lt;% params[:rating] = rating %&amp;gt;&lt;br /&gt;
                &amp;lt;select id=&amp;lt;%= bookmark.id %&amp;gt; name=&amp;quot;rating&amp;quot; style=&amp;quot;font-size: 10px&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;% (0..5).each do |i| %&amp;gt;&lt;br /&gt;
                    &amp;lt;option value=&amp;lt;%= i.to_s %&amp;gt;&lt;br /&gt;
                              &amp;lt;% if params[:rating] == i.to_s %&amp;gt;&lt;br /&gt;
                                selected&lt;br /&gt;
                       &amp;lt;% end %&amp;gt;&lt;br /&gt;
                     &amp;gt;&lt;br /&gt;
                       &amp;lt;%= i.to_s %&amp;gt;&lt;br /&gt;
                     &amp;lt;/option&amp;gt;&lt;br /&gt;
                  &amp;lt;% end %&amp;gt;&lt;br /&gt;
                &amp;lt;/select&amp;gt;&lt;br /&gt;
                &amp;lt;% if BookmarkRating.where(bookmark_id: bookmark.id, user_id: session[:user].id).first.blank? %&amp;gt;&lt;br /&gt;
                  &amp;lt;%= button_tag &amp;quot;Rate&amp;quot;, {:id=&amp;gt;'button'+bookmark.id.to_s,:style=&amp;gt;&amp;quot;font-size:10px; display:none;&amp;quot;} %&amp;gt;&lt;br /&gt;
                &amp;lt;% else %&amp;gt;&lt;br /&gt;
                  &amp;lt;%= button_tag &amp;quot;Update&amp;quot;, {:id=&amp;gt;'button'+bookmark.id.to_s,:style=&amp;gt;&amp;quot;font-size:10px; display:none;&amp;quot;} %&amp;gt;&lt;br /&gt;
                &amp;lt;% end %&amp;gt;&lt;br /&gt;
              &amp;lt;% end %&amp;gt;&lt;br /&gt;
            &amp;lt;% else %&amp;gt;&lt;br /&gt;
              &amp;lt;!-- This will be used to show the rubric --&amp;gt;&lt;br /&gt;
              &amp;lt;% bookmark_rating_response_map = BookmarkRating.get_bookmark_rating_response_map(bookmark, current_user) %&amp;gt;&lt;br /&gt;
              &amp;lt;% if bookmark_rating_response_map.nil? || bookmark_rating_response_map.response.size == 0 %&amp;gt;&lt;br /&gt;
                &amp;lt;%= link_to &amp;quot;Begin&amp;quot;, :action =&amp;gt; &amp;quot;new_bookmark_review&amp;quot;, :id =&amp;gt; bookmark.id %&amp;gt;&lt;br /&gt;
              &amp;lt;% else %&amp;gt;&lt;br /&gt;
                &amp;lt;%= link_to &amp;quot;View&amp;quot;, view_response_index_path(id: bookmark_rating_response_map.response.first.response_id) %&amp;gt;&lt;br /&gt;
                &amp;lt;%= link_to &amp;quot;Edit&amp;quot;, edit_response_path(id: bookmark_rating_response_map.response.first.response_id, return: 'bookmark') %&amp;gt;&lt;br /&gt;
              &amp;lt;% end %&amp;gt;&lt;br /&gt;
            &amp;lt;% end %&amp;gt;&lt;br /&gt;
          &amp;lt;% end %&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;% if bookmark.user_id == session[:user].id %&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= link_to 'Edit', :action =&amp;gt; 'edit', :id =&amp;gt; bookmark.id %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= link_to 'Destroy', bookmark, :confirm =&amp;gt; &amp;quot;Delete bookmark \&amp;quot;#{bookmark.title}\&amp;quot;?&amp;quot;, :method =&amp;gt; :delete %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;% end %&amp;gt;&lt;br /&gt;
           ....&lt;br /&gt;
:app/controllers/bookmarks_controller.rb&lt;br /&gt;
# method to check if a dropdown is used for rating bookmarks&lt;br /&gt;
   def has_dropdown?(topic)&lt;br /&gt;
     bookmark_rating_questionnaire = topic.assignment.questionnaires.where(type: 'BookmarkRatingQuestionnaire')&lt;br /&gt;
     if bookmark_rating_questionnaire[0].nil?&lt;br /&gt;
       true&lt;br /&gt;
     else&lt;br /&gt;
       false&lt;br /&gt;
     end&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
The changed code can be found &amp;lt;span class = &amp;quot;plainlinks&amp;quot;&amp;gt;[https://github.com/expertiza/expertiza/pull/1540/commits/3ad53b0cbd9b06f4a3a3ff85311c38f5b5672970?file-filters%5B%5D= here:]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Review bookmark using rubric functionality'''&lt;br /&gt;
The bookmark functionality earlier only allowed for the users to rate the bookmark and not give feedback about the the quality of the Bookmark. Now, feature is added so that the instructor can decide whether to allow for bookmark to be just rated or a have a rubric . The instructor can customize the questions in the rubric.  The rubric once created by the instructor can be used for multiple assignments and also multiple rubrics can be created for different types of assignments. &lt;br /&gt;
&lt;br /&gt;
Files Modified&lt;br /&gt;
:app/controllers/bookmarks_controller.rb&lt;br /&gt;
    &lt;br /&gt;
    ..... &lt;br /&gt;
    # Saves the responses to the bookmark review questionnaire.&lt;br /&gt;
    # If a previous response exists it updates it.&lt;br /&gt;
    def new_bookmark_review&lt;br /&gt;
        bookmark = Bookmark.find(params[:id])&lt;br /&gt;
        topic = SignUpTopic.find(bookmark.topic_id)&lt;br /&gt;
        assignment_participant = AssignmentParticipant.find_by(user_id: current_user.id)&lt;br /&gt;
        response_map = BookmarkRatingResponseMap.where(&lt;br /&gt;
          reviewed_object_id: topic.assignment.id,&lt;br /&gt;
          reviewer_id: assignment_participant.id,&lt;br /&gt;
          reviewee_id: bookmark.id&lt;br /&gt;
        ).first&lt;br /&gt;
        if response_map.nil?&lt;br /&gt;
          response_map = BookmarkRatingResponseMap.create(&lt;br /&gt;
            reviewed_object_id: topic.assignment.id,&lt;br /&gt;
            reviewer_id: assignment_participant.id,&lt;br /&gt;
            reviewee_id: bookmark.id&lt;br /&gt;
          )&lt;br /&gt;
        end&lt;br /&gt;
        redirect_to new_response_url(id: response_map.id, return: 'bookmark')&lt;br /&gt;
      end&lt;br /&gt;
      .....&lt;br /&gt;
&lt;br /&gt;
:app/controllers/questionnaires_controller.rb&lt;br /&gt;
&lt;br /&gt;
    if %w[AuthorFeedback CourseSurvey TeammateReview GlobalSurvey AssignmentSurvey BookmarkRating].include?(display_type)&lt;br /&gt;
          display_type = (display_type.split /(?=[A-Z])/).join(&amp;quot;%&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
        @questionnaire.display_type = display_type&lt;br /&gt;
&lt;br /&gt;
:app/controllers/response_controller.rb&lt;br /&gt;
&lt;br /&gt;
        when &amp;quot;bookmark&amp;quot;&lt;br /&gt;
            bookmark = Bookmark.find(@map.response_map.reviewee_id)&lt;br /&gt;
             redirect_to controller: 'bookmarks', action: 'list', id: bookmark.topic_id&lt;br /&gt;
     &lt;br /&gt;
       def set_questionnaire_for_new_response&lt;br /&gt;
           .&lt;br /&gt;
           .&lt;br /&gt;
              &amp;quot;GlobalSurveyResponseMap&amp;quot;,&lt;br /&gt;
              &amp;quot;BookmarkRatingResponseMap&amp;quot;&lt;br /&gt;
              @questionnaire = @map.questionnaire&lt;br /&gt;
           end&lt;br /&gt;
       end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The screencast can be found &amp;lt;span class = &amp;quot;plainlinks&amp;quot;&amp;gt;[https://drive.google.com/file/d/1W5xQCox-p_njQt_t8-yVkhn3B0HalKGk/view?usp=sharing here:]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testing  Plan ==&lt;br /&gt;
&lt;br /&gt;
===Testing From UI ===&lt;br /&gt;
&lt;br /&gt;
* Enable Bookmarks&lt;br /&gt;
# After logging in as instructor, go to Manage &amp;gt; Assignments &lt;br /&gt;
# Select Edit under Actions for assignment&lt;br /&gt;
# Under Topics Tab select 'Allow participants to create bookmarks?' to allow bookmarks&lt;br /&gt;
# Go to Rubrics tab, under 'Bookmark Rating' select the Bookmark review questionnaire to use the rubric for reviewing the bookmarks , select None for dropdown. &lt;br /&gt;
&lt;br /&gt;
'''Note''': When 'Bookmark Rating' is 'None', the error the error 'You did not specify all the necessary rubrics. You need [BookmarkRating] of assignment Exercises before saving the assignment. You can assign rubrics here.' is out of scope of the current project and the error can safely be ignored from point of view of this project&lt;br /&gt;
'&lt;br /&gt;
* Fixing the back Button &amp;amp; Validations&lt;br /&gt;
#     Log in as an instructor and impersonate as a student using the credentials given above&lt;br /&gt;
#	Select ‘Exercises’ assignment and go to the Signup sheet&lt;br /&gt;
#	We can see a list of projects with 2 columns to add or remove the Bookmark, select any of them&lt;br /&gt;
#	You’ll be redirected to the corresponding page where the back button will be visible&lt;br /&gt;
#      Select add bookmark and the form can be tested for Validations.   &lt;br /&gt;
&lt;br /&gt;
*Create new Bookmark Rating Rubric&lt;br /&gt;
# As an instructor, go to Manage&amp;gt;Questionnaires and select Bookmark Rating field&lt;br /&gt;
#Create a new rubric with required details&lt;br /&gt;
# Start adding questions. This can be done by manually entering into the system or importing Questionnaire.&lt;br /&gt;
&lt;br /&gt;
*View Bookmarks&lt;br /&gt;
&lt;br /&gt;
#	Log in as an instructor and impersonate as user using the credentials mentioned above and then select assignment &amp;quot;Exercises&amp;quot;&lt;br /&gt;
#     Add bookmarks to other topics.&lt;br /&gt;
#	The owner of that project should be able to see all the bookmarks created for his project and can rate the bookmark through the way instructor has defined it (rating or rubric).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing with RSpec ===&lt;br /&gt;
The current version of expertiza did not have any test for the BookmarksController and the Bookmarks model. Using the test driven development(TDD) approach, we have added an exhaustive set of RSPEC tests for BookmarksController, to test all the modifications we have done to the code of the controller class. We have also added unit tests to the bookmarks model. The tests can be executed using the &amp;quot;bundle exec rspec filename&amp;quot; command as shown below.&lt;br /&gt;
&lt;br /&gt;
   user-expertiza $bundle exec rspec spec_file_path&lt;br /&gt;
   [Coveralls] Set up the SimpleCov formatter.&lt;br /&gt;
   [Coveralls] Using SimpleCov's 'rails' settings.&lt;br /&gt;
   Randomized with seed 5067&lt;br /&gt;
   ......................&lt;br /&gt;
   Finished in 1 minute 50.34 seconds (files took 10.6 seconds to load)&lt;br /&gt;
   22 examples, 0 failures&lt;br /&gt;
   Randomized with seed 5067&lt;br /&gt;
&lt;br /&gt;
==Deployment==&lt;br /&gt;
This application with the mentioned changes have been deployed on VCL and can be found at [http://152.46.19.205:8080 http://152.46.19.205:8080]&lt;br /&gt;
&lt;br /&gt;
== Future Scope ==&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#Github Link: https://github.com/srujana13/expertiza &lt;br /&gt;
#Pull Request: https://github.com/expertiza/expertiza/pull/1540/&lt;br /&gt;
#http://wiki.expertiza.ncsu.edu/index.php/E1830_OSS_Project_Juniper:_Bookmark_enhancements&lt;br /&gt;
# Expertiza on Github https://github.com/expertiza/expertiza&lt;br /&gt;
&lt;br /&gt;
==Contributors==&lt;br /&gt;
#Tanvi Pandit (tmpandi2@ncsu.edu)&lt;br /&gt;
#Abhirav Kariya (akariya@ncsu.edu)&lt;br /&gt;
#Srujana Rachakonda (srachak@ncsu.edu)&lt;br /&gt;
#Mentor Edward Gehringer  (efg@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Akariya</name></author>
	</entry>
</feed>