<?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=Atewari</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=Atewari"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Atewari"/>
	<updated>2026-06-02T20:07:00Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1875_Revision_Planning_Tool&amp;diff=121519</id>
		<title>E1875 Revision Planning Tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1875_Revision_Planning_Tool&amp;diff=121519"/>
		<updated>2018-12-14T03:32:26Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
== What's it about? ==&lt;br /&gt;
In the first round of Expertiza reviews, we ask reviewers to give authors some guidance on how to improve their work.  Then in the second round, reviewers rate how well authors have followed their suggestions.  We could carry the interaction one step further if we asked authors to make up a revision plan based on the first-round reviews.  That is, authors would say what they were planning to do to improve their work.  Then second-round reviewers would assess how well they did it.  In essence, this means that authors would be adding criteria to the second-round rubric that applied only to their submission.  We are interested in having this implemented and used in a class so that we can study its effect.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== What needs to be done? ==&lt;br /&gt;
* Develop UI for authors to create new questions to add to the second round-rubric. This should be a form that includes the following:&lt;br /&gt;
** A description of the revision plan. Eg: We will add feature X to address issues a,b and c. We will modify feature Y and expect it to resolve errors d, c and e.&lt;br /&gt;
** One or more questions for every proposed improvement. Example:&lt;br /&gt;
*** How effectively did feature X address / solve issues a, b and c?&lt;br /&gt;
*** Did modification of feature Y resolve error d?&lt;br /&gt;
* Every new question must be linked to the second-round questionnaire.&lt;br /&gt;
* Every new question must be linked to the author’s submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
In the 2nd round of reviews, the Author should be able to add a statement to direct towards Author selected improvements from Round 1 to Round 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Motivation ==&lt;br /&gt;
The OSS and Final projects are different for every team. From a reviewers perspective, not all questions make sense for all projects. The motivation behind this project is:&lt;br /&gt;
* Questions unique to each project gives the reviewers a perspective on the author’s objectives.&lt;br /&gt;
* Allow the Author to get feedback on whether or not they accomplished their self-directed goal.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Criteria for completion ==&lt;br /&gt;
# Direct user to Revision Improvement Questionnaire.&lt;br /&gt;
# Create a form for a Assignment Team to add Questions to a Questionnaire that are specific to that Submission.&lt;br /&gt;
# Append Revision Improvement Questionnaire to 2nd Round Review Questionnaire.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== UI mockups ===&lt;br /&gt;
The first image shows a mockup of what the Author will see on the submission page to submit new additional questions for review. &amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:E1875U1_1.jpg]]&amp;lt;br/&amp;gt;&lt;br /&gt;
Second is a view of what the reviewer will see. It should blend in with the review questions submitted by the instructor for all similar projects.&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:E1875UI_2.jpg]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
&lt;br /&gt;
==== Controllers ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-a7ee7dddd7aedbc0b814d98f0cb34c25 grades_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-b41fa84d1ee0c03c4e301f977fbe453d questionnaires_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-7786ab741930f6bace28b7e5da61b8d6 response_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-33d668958529875af7029d78e37aff60 submitted_content_controller.rb]&lt;br /&gt;
&lt;br /&gt;
==== Views ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-2213cf9074761b4121a9fb3ddcce6145 questionnaires/_questionnaire.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-6b83ba9473bd5cc58d3b7c620235a6c0 submitted_content/edit.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-6b83ba9473bd5cc58d3b7c620235a6c0 submitted_content/edit.html.erb]&lt;br /&gt;
&lt;br /&gt;
==== Models ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-a983bfc492e6d1982c673bc208afe459 answer.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-3dffd0131e1a14847e8c98376bae4984 questionnaire.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-f2caf2e29f94ec94cb27bdb86ec85d40 response.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-85f51952994f8162980c605efd60db44 revision_review_questionnaire.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-c6f2a3b3452f5a9effa4a2b023ed2322 submission_record.rb]&lt;br /&gt;
&lt;br /&gt;
==== Database ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-c2ba560985d8d1ea9184e04d71bf2c83 20181123004154_add_submission_record_to_questionnaire.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-1acd2e7e27a227829d5d14a91c863bb6 schema.rb]&lt;br /&gt;
&lt;br /&gt;
==== Specs ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-ebb9ab8d49abf2b40d4aad426dad68e5 grades_controller_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-df286dc963f50de24c47bacfb0b3a143 questionnaires_controller_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-3a17ddf9d828caa60f11423f20fb88a9 factories.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-7d95010cdfe370a461e216ba1d724392 assignment_submission_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-a68a7982922073b9602c0fd6097e0bd2 answer_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-e162432910d3b3b29b3c9711d6e818bb revision_review_questionnaire_spec.rb]&lt;br /&gt;
&lt;br /&gt;
==== config ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-21497849d8f00507c9c8dcaf6288b136 routes.rb]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test Plan and Demo ==&lt;br /&gt;
&lt;br /&gt;
=== Test Plan ===&lt;br /&gt;
# Login as 'instructor6' with password 'password'.&lt;br /&gt;
# Create 2 new users named 'abc' and 'xyz'.&lt;br /&gt;
# Make an assignment with the name 'RPT'. Add abc and xyz as participants to RPT.&lt;br /&gt;
# Set 2 rounds of submissions and reviews in RPT.&lt;br /&gt;
# impersonate abc.&lt;br /&gt;
# submit for round 1.&lt;br /&gt;
# move to round 1 review stage.&lt;br /&gt;
# impersonate xyz.&lt;br /&gt;
# add review as xyz.&lt;br /&gt;
# move to round 2 submission stage&lt;br /&gt;
# impersonate abc.&lt;br /&gt;
# submit a revision plan through the submission page.&lt;br /&gt;
# move to round 2 review.&lt;br /&gt;
# impersonate xyz.&lt;br /&gt;
# verify that revision plan wuestions are added to the review and submit the review.&lt;br /&gt;
# impersonate abc.&lt;br /&gt;
# verify that review has been received on the revision plan questions.&lt;br /&gt;
&lt;br /&gt;
=== demo video ===&lt;br /&gt;
[https://www.youtube.com/watch?v=J1QeUd0b7RQ E1875]&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1875_Revision_Planning_Tool&amp;diff=121518</id>
		<title>E1875 Revision Planning Tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1875_Revision_Planning_Tool&amp;diff=121518"/>
		<updated>2018-12-14T03:31:14Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
== What's it about? ==&lt;br /&gt;
In the first round of Expertiza reviews, we ask reviewers to give authors some guidance on how to improve their work.  Then in the second round, reviewers rate how well authors have followed their suggestions.  We could carry the interaction one step further if we asked authors to make up a revision plan based on the first-round reviews.  That is, authors would say what they were planning to do to improve their work.  Then second-round reviewers would assess how well they did it.  In essence, this means that authors would be adding criteria to the second-round rubric that applied only to their submission.  We are interested in having this implemented and used in a class so that we can study its effect.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== What needs to be done? ==&lt;br /&gt;
* Develop UI for authors to create new questions to add to the second round-rubric. This should be a form that includes the following:&lt;br /&gt;
** A description of the revision plan. Eg: We will add feature X to address issues a,b and c. We will modify feature Y and expect it to resolve errors d, c and e.&lt;br /&gt;
** One or more questions for every proposed improvement. Example:&lt;br /&gt;
*** How effectively did feature X address / solve issues a, b and c?&lt;br /&gt;
*** Did modification of feature Y resolve error d?&lt;br /&gt;
* Every new question must be linked to the second-round questionnaire.&lt;br /&gt;
* Every new question must be linked to the author’s submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
In the 2nd round of reviews, the Author should be able to add a statement to direct towards Author selected improvements from Round 1 to Round 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Motivation ==&lt;br /&gt;
The OSS and Final projects are different for every team. From a reviewers perspective, not all questions make sense for all projects. The motivation behind this project is:&lt;br /&gt;
* Questions unique to each project gives the reviewers a perspective on the author’s objectives.&lt;br /&gt;
* Allow the Author to get feedback on whether or not they accomplished their self-directed goal.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Criteria for completion ==&lt;br /&gt;
# Direct user to Revision Improvement Questionnaire.&lt;br /&gt;
# Create a form for a Assignment Team to add Questions to a Questionnaire that are specific to that Submission.&lt;br /&gt;
# Append Revision Improvement Questionnaire to 2nd Round Review Questionnaire.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== UI mockups ===&lt;br /&gt;
The first image shows a mockup of what the Author will see on the submission page to submit new additional questions for review. &amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:E1875U1_1.jpg]]&amp;lt;br/&amp;gt;&lt;br /&gt;
Second is a view of what the reviewer will see. It should blend in with the review questions submitted by the instructor for all similar projects.&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:E1875UI_2.jpg]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
&lt;br /&gt;
==== Controllers ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-a7ee7dddd7aedbc0b814d98f0cb34c25 grades_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-b41fa84d1ee0c03c4e301f977fbe453d questionnaires_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-7786ab741930f6bace28b7e5da61b8d6 response_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-33d668958529875af7029d78e37aff60 submitted_content_controller.rb]&lt;br /&gt;
&lt;br /&gt;
==== Views ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-2213cf9074761b4121a9fb3ddcce6145 questionnaires/_questionnaire.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-6b83ba9473bd5cc58d3b7c620235a6c0 submitted_content/edit.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-6b83ba9473bd5cc58d3b7c620235a6c0 submitted_content/edit.html.erb]&lt;br /&gt;
&lt;br /&gt;
==== Models ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-a983bfc492e6d1982c673bc208afe459 answer.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-3dffd0131e1a14847e8c98376bae4984 questionnaire.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-f2caf2e29f94ec94cb27bdb86ec85d40 response.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-85f51952994f8162980c605efd60db44 revision_review_questionnaire.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-c6f2a3b3452f5a9effa4a2b023ed2322 submission_record.rb]&lt;br /&gt;
&lt;br /&gt;
==== Database ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-c2ba560985d8d1ea9184e04d71bf2c83 20181123004154_add_submission_record_to_questionnaire.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-1acd2e7e27a227829d5d14a91c863bb6 schema.rb]&lt;br /&gt;
&lt;br /&gt;
==== Specs ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-ebb9ab8d49abf2b40d4aad426dad68e5 grades_controller_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-df286dc963f50de24c47bacfb0b3a143 questionnaires_controller_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-3a17ddf9d828caa60f11423f20fb88a9 factories.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-7d95010cdfe370a461e216ba1d724392 assignment_submission_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-a68a7982922073b9602c0fd6097e0bd2 answer_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-e162432910d3b3b29b3c9711d6e818bb revision_review_questionnaire_spec.rb]&lt;br /&gt;
&lt;br /&gt;
==== config ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-21497849d8f00507c9c8dcaf6288b136 routes.rb]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test Plan and Demo ==&lt;br /&gt;
&lt;br /&gt;
=== Test Plan ===&lt;br /&gt;
# Login as 'instructor6' with password 'password'.&lt;br /&gt;
# Create 2 new users named 'abc' and 'xyz'.&lt;br /&gt;
# Make an assignment with the name 'RPT'. Add abc and xyz as participants to RPT.&lt;br /&gt;
# Set 2 rounds of submissions and reviews in RPT.&lt;br /&gt;
# impersonate abc.&lt;br /&gt;
# submit for round 1.&lt;br /&gt;
# move to round 1 review stage.&lt;br /&gt;
# impersonate xyz.&lt;br /&gt;
# add review as xyz.&lt;br /&gt;
# move to round 2 submission stage&lt;br /&gt;
# impersonate abc.&lt;br /&gt;
# submit a revision plan through the submission page.&lt;br /&gt;
# move to round 2 review.&lt;br /&gt;
# impersonate xyz.&lt;br /&gt;
# verify that revision plan wuestions are added to the review and submit the review.&lt;br /&gt;
# impersonate abc.&lt;br /&gt;
# verify that review has been received on the revision plan questions.&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1875_Revision_Planning_Tool&amp;diff=121517</id>
		<title>E1875 Revision Planning Tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1875_Revision_Planning_Tool&amp;diff=121517"/>
		<updated>2018-12-14T03:17:12Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
== What's it about? ==&lt;br /&gt;
In the first round of Expertiza reviews, we ask reviewers to give authors some guidance on how to improve their work.  Then in the second round, reviewers rate how well authors have followed their suggestions.  We could carry the interaction one step further if we asked authors to make up a revision plan based on the first-round reviews.  That is, authors would say what they were planning to do to improve their work.  Then second-round reviewers would assess how well they did it.  In essence, this means that authors would be adding criteria to the second-round rubric that applied only to their submission.  We are interested in having this implemented and used in a class so that we can study its effect.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== What needs to be done? ==&lt;br /&gt;
* Develop UI for authors to create new questions to add to the second round-rubric. This should be a form that includes the following:&lt;br /&gt;
** A description of the revision plan. Eg: We will add feature X to address issues a,b and c. We will modify feature Y and expect it to resolve errors d, c and e.&lt;br /&gt;
** One or more questions for every proposed improvement. Example:&lt;br /&gt;
*** How effectively did feature X address / solve issues a, b and c?&lt;br /&gt;
*** Did modification of feature Y resolve error d?&lt;br /&gt;
* Every new question must be linked to the second-round questionnaire.&lt;br /&gt;
* Every new question must be linked to the author’s submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
In the 2nd round of reviews, the Author should be able to add a statement to direct towards Author selected improvements from Round 1 to Round 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Motivation ==&lt;br /&gt;
The OSS and Final projects are different for every team. From a reviewers perspective, not all questions make sense for all projects. The motivation behind this project is:&lt;br /&gt;
* Questions unique to each project gives the reviewers a perspective on the author’s objectives.&lt;br /&gt;
* Allow the Author to get feedback on whether or not they accomplished their self-directed goal.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Criteria for completion ==&lt;br /&gt;
# Direct user to Revision Improvement Questionnaire.&lt;br /&gt;
# Create a form for a Assignment Team to add Questions to a Questionnaire that are specific to that Submission.&lt;br /&gt;
# Append Revision Improvement Questionnaire to 2nd Round Review Questionnaire.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== UI mockups ===&lt;br /&gt;
The first image shows a mockup of what the Author will see on the submission page to submit new additional questions for review. &amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:E1875U1_1.jpg]]&amp;lt;br/&amp;gt;&lt;br /&gt;
Second is a view of what the reviewer will see. It should blend in with the review questions submitted by the instructor for all similar projects.&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:E1875UI_2.jpg]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
=== Test Plan ===&lt;br /&gt;
# Authors should be able to add additional review questions to their submission.&lt;br /&gt;
# Reviewers should be able to give feedback according to the review question written by the author.&lt;br /&gt;
# Authors should be able to view the feedback given on the questions they wrote.&lt;br /&gt;
# ''Stretch'': Instructors should be able to set requirements on the number of additional review questions authors are required to add.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
&lt;br /&gt;
==== Controllers ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-a7ee7dddd7aedbc0b814d98f0cb34c25 grades_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-b41fa84d1ee0c03c4e301f977fbe453d questionnaires_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-7786ab741930f6bace28b7e5da61b8d6 response_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-33d668958529875af7029d78e37aff60 submitted_content_controller.rb]&lt;br /&gt;
&lt;br /&gt;
==== Views ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-2213cf9074761b4121a9fb3ddcce6145 questionnaires/_questionnaire.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-6b83ba9473bd5cc58d3b7c620235a6c0 submitted_content/edit.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-6b83ba9473bd5cc58d3b7c620235a6c0 submitted_content/edit.html.erb]&lt;br /&gt;
&lt;br /&gt;
==== Models ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-a983bfc492e6d1982c673bc208afe459 answer.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-3dffd0131e1a14847e8c98376bae4984 questionnaire.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-f2caf2e29f94ec94cb27bdb86ec85d40 response.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-85f51952994f8162980c605efd60db44 revision_review_questionnaire.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-c6f2a3b3452f5a9effa4a2b023ed2322 submission_record.rb]&lt;br /&gt;
&lt;br /&gt;
==== Database ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-c2ba560985d8d1ea9184e04d71bf2c83 20181123004154_add_submission_record_to_questionnaire.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-1acd2e7e27a227829d5d14a91c863bb6 schema.rb]&lt;br /&gt;
&lt;br /&gt;
==== Specs ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-ebb9ab8d49abf2b40d4aad426dad68e5 grades_controller_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-df286dc963f50de24c47bacfb0b3a143 questionnaires_controller_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-3a17ddf9d828caa60f11423f20fb88a9 factories.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-7d95010cdfe370a461e216ba1d724392 assignment_submission_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-a68a7982922073b9602c0fd6097e0bd2 answer_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-e162432910d3b3b29b3c9711d6e818bb revision_review_questionnaire_spec.rb]&lt;br /&gt;
&lt;br /&gt;
==== config ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-21497849d8f00507c9c8dcaf6288b136 routes.rb]&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1875_Revision_Planning_Tool&amp;diff=121516</id>
		<title>E1875 Revision Planning Tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1875_Revision_Planning_Tool&amp;diff=121516"/>
		<updated>2018-12-14T03:16:42Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
== What's it about? ==&lt;br /&gt;
In the first round of Expertiza reviews, we ask reviewers to give authors some guidance on how to improve their work.  Then in the second round, reviewers rate how well authors have followed their suggestions.  We could carry the interaction one step further if we asked authors to make up a revision plan based on the first-round reviews.  That is, authors would say what they were planning to do to improve their work.  Then second-round reviewers would assess how well they did it.  In essence, this means that authors would be adding criteria to the second-round rubric that applied only to their submission.  We are interested in having this implemented and used in a class so that we can study its effect.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== What needs to be done? ==&lt;br /&gt;
* Develop UI for authors to create new questions to add to the second round-rubric. This should be a form that includes the following:&lt;br /&gt;
** A description of the revision plan. Eg: We will add feature X to address issues a,b and c. We will modify feature Y and expect it to resolve errors d, c and e.&lt;br /&gt;
** One or more questions for every proposed improvement. Example:&lt;br /&gt;
*** How effectively did feature X address / solve issues a, b and c?&lt;br /&gt;
*** Did modification of feature Y resolve error d?&lt;br /&gt;
* Every new question must be linked to the second-round questionnaire.&lt;br /&gt;
* Every new question must be linked to the author’s submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
In the 2nd round of reviews, the Author should be able to add a statement to direct towards Author selected improvements from Round 1 to Round 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Motivation ==&lt;br /&gt;
The OSS and Final projects are different for every team. From a reviewers perspective, not all questions make sense for all projects. The motivation behind this project is:&lt;br /&gt;
* Questions unique to each project gives the reviewers a perspective on the author’s objectives.&lt;br /&gt;
* Allow the Author to get feedback on whether or not they accomplished their self-directed goal.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Criteria for completion ==&lt;br /&gt;
# Direct user to Revision Improvement Questionnaire.&lt;br /&gt;
# Create a form for a Assignment Team to add Questions to a Questionnaire that are specific to that Submission.&lt;br /&gt;
# Append Revision Improvement Questionnaire to 2nd Round Review Questionnaire.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Files to be modified ===&lt;br /&gt;
==== Bookmark Rating Questionnaire ====&lt;br /&gt;
Bookmark Rating Questionnaire Controller Code[https://github.com/rahuliyer95/expertiza/blob/157553470c420bafc17413978dfccc0a89790dee/app/controllers/bookmark_rating_questionnaire_controller.rb#L4]&lt;br /&gt;
&lt;br /&gt;
==== Questionnaire ====&lt;br /&gt;
* questionnaire_controller.rb&lt;br /&gt;
* questionnaire.rb&lt;br /&gt;
* author_review_questionnaire.rb ( doesn’t exist, needs to be created and named appropriately )&lt;br /&gt;
* questionnaires/*.erb&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==== Submitted Content ====&lt;br /&gt;
* submitted_content_controller.rb&lt;br /&gt;
* submission_record.rb&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UI mockups ===&lt;br /&gt;
The first image shows a mockup of what the Author will see on the submission page to submit new additional questions for review. &amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:E1875U1_1.jpg]]&amp;lt;br/&amp;gt;&lt;br /&gt;
Second is a view of what the reviewer will see. It should blend in with the review questions submitted by the instructor for all similar projects.&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:E1875UI_2.jpg]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
=== Test Plan ===&lt;br /&gt;
# Authors should be able to add additional review questions to their submission.&lt;br /&gt;
# Reviewers should be able to give feedback according to the review question written by the author.&lt;br /&gt;
# Authors should be able to view the feedback given on the questions they wrote.&lt;br /&gt;
# ''Stretch'': Instructors should be able to set requirements on the number of additional review questions authors are required to add.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Files modified ==&lt;br /&gt;
&lt;br /&gt;
==== Controllers ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-a7ee7dddd7aedbc0b814d98f0cb34c25 grades_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-b41fa84d1ee0c03c4e301f977fbe453d questionnaires_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-7786ab741930f6bace28b7e5da61b8d6 response_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-33d668958529875af7029d78e37aff60 submitted_content_controller.rb]&lt;br /&gt;
&lt;br /&gt;
==== Views ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-2213cf9074761b4121a9fb3ddcce6145 questionnaires/_questionnaire.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-6b83ba9473bd5cc58d3b7c620235a6c0 submitted_content/edit.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-6b83ba9473bd5cc58d3b7c620235a6c0 submitted_content/edit.html.erb]&lt;br /&gt;
&lt;br /&gt;
==== Models ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-a983bfc492e6d1982c673bc208afe459 answer.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-3dffd0131e1a14847e8c98376bae4984 questionnaire.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-f2caf2e29f94ec94cb27bdb86ec85d40 response.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-85f51952994f8162980c605efd60db44 revision_review_questionnaire.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-c6f2a3b3452f5a9effa4a2b023ed2322 submission_record.rb]&lt;br /&gt;
&lt;br /&gt;
==== Database ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-c2ba560985d8d1ea9184e04d71bf2c83 20181123004154_add_submission_record_to_questionnaire.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-1acd2e7e27a227829d5d14a91c863bb6 schema.rb]&lt;br /&gt;
&lt;br /&gt;
==== Specs ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-ebb9ab8d49abf2b40d4aad426dad68e5 grades_controller_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-df286dc963f50de24c47bacfb0b3a143 questionnaires_controller_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-3a17ddf9d828caa60f11423f20fb88a9 factories.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-7d95010cdfe370a461e216ba1d724392 assignment_submission_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-a68a7982922073b9602c0fd6097e0bd2 answer_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-e162432910d3b3b29b3c9711d6e818bb revision_review_questionnaire_spec.rb]&lt;br /&gt;
&lt;br /&gt;
==== config ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-21497849d8f00507c9c8dcaf6288b136 routes.rb]&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1875_Revision_Planning_Tool&amp;diff=121515</id>
		<title>E1875 Revision Planning Tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1875_Revision_Planning_Tool&amp;diff=121515"/>
		<updated>2018-12-14T02:39:28Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
== What's it about? ==&lt;br /&gt;
In the first round of Expertiza reviews, we ask reviewers to give authors some guidance on how to improve their work.  Then in the second round, reviewers rate how well authors have followed their suggestions.  We could carry the interaction one step further if we asked authors to make up a revision plan based on the first-round reviews.  That is, authors would say what they were planning to do to improve their work.  Then second-round reviewers would assess how well they did it.  In essence, this means that authors would be adding criteria to the second-round rubric that applied only to their submission.  We are interested in having this implemented and used in a class so that we can study its effect.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== What needs to be done? ==&lt;br /&gt;
* Develop UI for authors to create new questions to add to the second round-rubric. This should be a form that includes the following:&lt;br /&gt;
** A description of the revision plan. Eg: We will add feature X to address issues a,b and c. We will modify feature Y and expect it to resolve errors d, c and e.&lt;br /&gt;
** One or more questions for every proposed improvement. Example:&lt;br /&gt;
*** How effectively did feature X address / solve issues a, b and c?&lt;br /&gt;
*** Did modification of feature Y resolve error d?&lt;br /&gt;
* Every new question must be linked to the second-round questionnaire.&lt;br /&gt;
* Every new question must be linked to the author’s submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
In the 2nd round of reviews, the Author should be able to add a statement to direct towards Author selected improvements from Round 1 to Round 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Motivation ==&lt;br /&gt;
The OSS and Final projects are different for every team. From a reviewers perspective, not all questions make sense for all projects. The motivation behind this project is:&lt;br /&gt;
* Questions unique to each project gives the reviewers a perspective on the author’s objectives.&lt;br /&gt;
* Allow the Author to get feedback on whether or not they accomplished their self-directed goal.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Criteria for completion ==&lt;br /&gt;
# Direct user to Revision Improvement Questionnaire.&lt;br /&gt;
# Create a form for a Assignment Team to add Questions to a Questionnaire that are specific to that Submission.&lt;br /&gt;
# Append Revision Improvement Questionnaire to 2nd Round Review Questionnaire.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Implementation Plan ==&lt;br /&gt;
[[File:E1875UML.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
=== Files to be modified ===&lt;br /&gt;
==== Bookmark Rating Questionnaire ====&lt;br /&gt;
Bookmark Rating Questionnaire Controller Code[https://github.com/rahuliyer95/expertiza/blob/157553470c420bafc17413978dfccc0a89790dee/app/controllers/bookmark_rating_questionnaire_controller.rb#L4]&lt;br /&gt;
&lt;br /&gt;
==== Questionnaire ====&lt;br /&gt;
* questionnaire_controller.rb&lt;br /&gt;
* questionnaire.rb&lt;br /&gt;
* author_review_questionnaire.rb ( doesn’t exist, needs to be created and named appropriately )&lt;br /&gt;
* questionnaires/*.erb&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==== Submitted Content ====&lt;br /&gt;
* submitted_content_controller.rb&lt;br /&gt;
* submission_record.rb&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UI mockups ===&lt;br /&gt;
The first image shows a mockup of what the Author will see on the submission page to submit new additional questions for review. &amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:E1875U1_1.jpg]]&amp;lt;br/&amp;gt;&lt;br /&gt;
Second is a view of what the reviewer will see. It should blend in with the review questions submitted by the instructor for all similar projects.&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:E1875UI_2.jpg]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
=== Test Plan ===&lt;br /&gt;
# Authors should be able to add additional review questions to their submission.&lt;br /&gt;
# Reviewers should be able to give feedback according to the review question written by the author.&lt;br /&gt;
# Authors should be able to view the feedback given on the questions they wrote.&lt;br /&gt;
# ''Stretch'': Instructors should be able to set requirements on the number of additional review questions authors are required to add.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Files modified ==&lt;br /&gt;
&lt;br /&gt;
==== Controllers ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-a7ee7dddd7aedbc0b814d98f0cb34c25 grades_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-b41fa84d1ee0c03c4e301f977fbe453d questionnaires_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-7786ab741930f6bace28b7e5da61b8d6 response_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-33d668958529875af7029d78e37aff60 submitted_content_controller.rb]&lt;br /&gt;
&lt;br /&gt;
==== Views ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-2213cf9074761b4121a9fb3ddcce6145 questionnaires/_questionnaire.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-6b83ba9473bd5cc58d3b7c620235a6c0 submitted_content/edit.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-6b83ba9473bd5cc58d3b7c620235a6c0 submitted_content/edit.html.erb]&lt;br /&gt;
&lt;br /&gt;
==== Models ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-a983bfc492e6d1982c673bc208afe459 answer.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-3dffd0131e1a14847e8c98376bae4984 questionnaire.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-f2caf2e29f94ec94cb27bdb86ec85d40 response.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-85f51952994f8162980c605efd60db44 revision_review_questionnaire.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-c6f2a3b3452f5a9effa4a2b023ed2322 submission_record.rb]&lt;br /&gt;
&lt;br /&gt;
==== Database ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-c2ba560985d8d1ea9184e04d71bf2c83 20181123004154_add_submission_record_to_questionnaire.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-1acd2e7e27a227829d5d14a91c863bb6 schema.rb]&lt;br /&gt;
&lt;br /&gt;
==== Specs ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-ebb9ab8d49abf2b40d4aad426dad68e5 grades_controller_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-df286dc963f50de24c47bacfb0b3a143 questionnaires_controller_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-3a17ddf9d828caa60f11423f20fb88a9 factories.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-7d95010cdfe370a461e216ba1d724392 assignment_submission_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-a68a7982922073b9602c0fd6097e0bd2 answer_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-e162432910d3b3b29b3c9711d6e818bb revision_review_questionnaire_spec.rb]&lt;br /&gt;
&lt;br /&gt;
==== config ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1302/files#diff-21497849d8f00507c9c8dcaf6288b136 routes.rb]&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1875_Revision_Planning_Tool&amp;diff=119738</id>
		<title>E1875 Revision Planning Tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1875_Revision_Planning_Tool&amp;diff=119738"/>
		<updated>2018-11-13T20:23:06Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
== What's it about? ==&lt;br /&gt;
In the first round of Expertiza reviews, we ask reviewers to give authors some guidance on how to improve their work.  Then in the second round, reviewers rate how well authors have followed their suggestions.  We could carry the interaction one step further if we asked authors to make up a revision plan based on the first-round reviews.  That is, authors would say what they were planning to do to improve their work.  Then second-round reviewers would assess how well they did it.  In essence, this means that authors would be adding criteria to the second-round rubric that applied only to their submission.  We are interested in having this implemented and used in a class so that we can study its effect.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== What needs to be done? ==&lt;br /&gt;
* Develop UI for authors to create new questions to add to the second round-rubric. This should be a form that includes the following:&lt;br /&gt;
** A description of the revision plan. Eg: We will add feature X to address issues a,b and c. We will modify feature Y and expect it to resolve errors d, c and e.&lt;br /&gt;
** One or more questions for every proposed improvement. Example:&lt;br /&gt;
*** How effectively did feature X address / solve issues a, b and c?&lt;br /&gt;
*** Did modification of feature Y resolve error d?&lt;br /&gt;
* Every new question must be linked to the second-round questionnaire.&lt;br /&gt;
* Every new question must be linked to the author’s submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
In the 2nd round of reviews, the Author should be able to add a statement to direct towards Author selected improvements from Round 1 to Round 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Motivation ==&lt;br /&gt;
The OSS and Final projects are different for every team. From a reviewers perspective, not all questions make sense for all projects. The motivation behind this project is:&lt;br /&gt;
* Questions unique to each project gives the reviewers a perspective on the author’s objectives.&lt;br /&gt;
* Allow the Author to get feedback on whether or not they accomplished their self-directed goal.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Criteria for completion ==&lt;br /&gt;
# Direct user to Revision Improvement Questionnaire.&lt;br /&gt;
# Create a form for a Assignment Team to add Questions to a Questionnaire that are specific to that Submission.&lt;br /&gt;
# Append Revision Improvement Questionnaire to 2nd Round Review Questionnaire.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Implementation Plan ==&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
=== Files to be modified ===&lt;br /&gt;
==== Questionnaire ====&lt;br /&gt;
* questionnaire_controller.rb&lt;br /&gt;
* questionnaire.rb&lt;br /&gt;
* author_review_questionnaire.rb ( doesn’t exist, needs to be created and named appropriately )&lt;br /&gt;
* questionnaires/*.erb&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==== Submitted Content ====&lt;br /&gt;
* submitted_content_controller.rb&lt;br /&gt;
* submission_record.rb&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
=== UI mockups ===&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
=== Test Plan ===&lt;br /&gt;
# Authors should be able to add additional review questions to their submission.&lt;br /&gt;
# Reviewers should be able to give feedback according to the review question written by the author.&lt;br /&gt;
# Authors should be able to view the feedback given on the questions they wrote.&lt;br /&gt;
# ''Stretch'': Instructors should be able to set requirements on the number of additional review questions authors are required to add.&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1875_Revision_Planning_Tool&amp;diff=119737</id>
		<title>E1875 Revision Planning Tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1875_Revision_Planning_Tool&amp;diff=119737"/>
		<updated>2018-11-13T20:22:23Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== What's it about? ==&lt;br /&gt;
In the first round of Expertiza reviews, we ask reviewers to give authors some guidance on how to improve their work.  Then in the second round, reviewers rate how well authors have followed their suggestions.  We could carry the interaction one step further if we asked authors to make up a revision plan based on the first-round reviews.  That is, authors would say what they were planning to do to improve their work.  Then second-round reviewers would assess how well they did it.  In essence, this means that authors would be adding criteria to the second-round rubric that applied only to their submission.  We are interested in having this implemented and used in a class so that we can study its effect.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== What needs to be done? ==&lt;br /&gt;
* Develop UI for authors to create new questions to add to the second round-rubric. This should be a form that includes the following:&lt;br /&gt;
** A description of the revision plan. Eg: We will add feature X to address issues a,b and c. We will modify feature Y and expect it to resolve errors d, c and e.&lt;br /&gt;
** One or more questions for every proposed improvement. Example:&lt;br /&gt;
*** How effectively did feature X address / solve issues a, b and c?&lt;br /&gt;
*** Did modification of feature Y resolve error d?&lt;br /&gt;
* Every new question must be linked to the second-round questionnaire.&lt;br /&gt;
* Every new question must be linked to the author’s submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
In the 2nd round of reviews, the Author should be able to add a statement to direct towards Author selected improvements from Round 1 to Round 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Motivation ==&lt;br /&gt;
The OSS and Final projects are different for every team. From a reviewers perspective, not all questions make sense for all projects. The motivation behind this project is:&lt;br /&gt;
* Questions unique to each project gives the reviewers a perspective on the author’s objectives.&lt;br /&gt;
* Allow the Author to get feedback on whether or not they accomplished their self-directed goal.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Criteria for completion ==&lt;br /&gt;
# Direct user to Revision Improvement Questionnaire.&lt;br /&gt;
# Create a form for a Assignment Team to add Questions to a Questionnaire that are specific to that Submission.&lt;br /&gt;
# Append Revision Improvement Questionnaire to 2nd Round Review Questionnaire.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Implementation Plan ==&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
=== Files to be modified ===&lt;br /&gt;
==== Questionnaire ====&lt;br /&gt;
* questionnaire_controller.rb&lt;br /&gt;
* questionnaire.rb&lt;br /&gt;
* author_review_questionnaire.rb ( doesn’t exist, needs to be created and named appropriately )&lt;br /&gt;
* questionnaires/*.erb&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==== Submitted Content ====&lt;br /&gt;
* submitted_content_controller.rb&lt;br /&gt;
* submission_record.rb&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==== UI mockups ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==== Test Plan ====&lt;br /&gt;
# Authors should be able to add additional review questions to their submission.&lt;br /&gt;
# Reviewers should be able to give feedback according to the review question written by the author.&lt;br /&gt;
# Authors should be able to view the feedback given on the questions they wrote.&lt;br /&gt;
# ''Stretch'': Instructors should be able to set requirements on the number of additional review questions authors are required to add.&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1875_Revision_Planning_Tool&amp;diff=119706</id>
		<title>E1875 Revision Planning Tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1875_Revision_Planning_Tool&amp;diff=119706"/>
		<updated>2018-11-13T18:50:44Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Revision History ==&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Date&lt;br /&gt;
! Reason for change&lt;br /&gt;
! Version?&lt;br /&gt;
|-&lt;br /&gt;
| Amogh, Matt, Barrett, Rahul&lt;br /&gt;
| 12th November&lt;br /&gt;
| Design Outline, Initial Draft&lt;br /&gt;
| 0.1&lt;br /&gt;
|-&lt;br /&gt;
| Rahul&lt;br /&gt;
| 12th November&lt;br /&gt;
| Implementation Plan&lt;br /&gt;
| 0.2&lt;br /&gt;
|-&lt;br /&gt;
| Matt&lt;br /&gt;
| 13th November&lt;br /&gt;
| Edit, Reorganize Doc&lt;br /&gt;
| 0.3&lt;br /&gt;
|-&lt;br /&gt;
| Barret&lt;br /&gt;
| 13th November&lt;br /&gt;
| UI Mockup&lt;br /&gt;
| 0.4&lt;br /&gt;
|-&lt;br /&gt;
| Amogh&lt;br /&gt;
| 13th November&lt;br /&gt;
| Wiki Draft&lt;br /&gt;
| 0.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== What's it about? ==&lt;br /&gt;
In the first round of Expertiza reviews, we ask reviewers to give authors some guidance on how to improve their work.  Then in the second round, reviewers rate how well authors have followed their suggestions.  We could carry the interaction one step further if we asked authors to make up a revision plan based on the first-round reviews.  That is, authors would say what they were planning to do to improve their work.  Then second-round reviewers would assess how well they did it.  In essence, this means that authors would be adding criteria to the second-round rubric that applied only to their submission.  We are interested in having this implemented and used in a class so that we can study its effect.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== What needs to be done? ==&lt;br /&gt;
* Develop UI for authors to create new questions to add to the second round-rubric. This should be a form that includes the following:&lt;br /&gt;
** A description of the revision plan. Eg: We will add feature X to address issues a,b and c. We will modify feature Y and expect it to resolve errors d, c and e.&lt;br /&gt;
** One or more questions for every proposed improvement. Example:&lt;br /&gt;
*** How effectively did feature X address / solve issues a, b and c?&lt;br /&gt;
*** Did modification of feature Y resolve error d?&lt;br /&gt;
* Every new question must be linked to the second-round questionnaire.&lt;br /&gt;
* Every new question must be linked to the author’s submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
In the 2nd round of reviews, the Author should be able to add a statement to direct towards Author selected improvements from Round 1 to Round 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Motivation ==&lt;br /&gt;
The OSS and Final projects are different for every team. From a reviewers perspective, not all questions make sense for all projects. The motivation behind this project is:&lt;br /&gt;
* Questions unique to each project gives the reviewers a perspective on the author’s objectives.&lt;br /&gt;
* Allow the Author to get feedback on whether or not they accomplished their self-directed goal.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Criteria for completion ==&lt;br /&gt;
# Direct user to Revision Improvement Questionnaire.&lt;br /&gt;
# Create a form for a Assignment Team to add Questions to a Questionnaire that are specific to that Submission.&lt;br /&gt;
# Append Revision Improvement Questionnaire to 2nd Round Review Questionnaire.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Implementation Plan ==&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
=== Files to be modified ===&lt;br /&gt;
==== Questionnaire ====&lt;br /&gt;
* questionnaire_controller.rb&lt;br /&gt;
* questionnaire.rb&lt;br /&gt;
* author_review_questionnaire.rb ( doesn’t exist, needs to be created and named appropriately )&lt;br /&gt;
* questionnaires/*.erb&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==== Submitted Content ====&lt;br /&gt;
* submitted_content_controller.rb&lt;br /&gt;
* submission_record.rb&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==== UI mockups ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==== Test Plan ====&lt;br /&gt;
# Authors should be able to add additional review questions to their submission.&lt;br /&gt;
# Reviewers should be able to give feedback according to the review question written by the author.&lt;br /&gt;
# Authors should be able to view the feedback given on the questions they wrote.&lt;br /&gt;
# ''Stretch'': Instructors should be able to set requirements on the number of additional review questions authors are required to add.&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1875_Revision_Planning_Tool&amp;diff=119705</id>
		<title>E1875 Revision Planning Tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1875_Revision_Planning_Tool&amp;diff=119705"/>
		<updated>2018-11-13T18:48:31Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Revision History ==&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Date&lt;br /&gt;
! Reason for change&lt;br /&gt;
! Version?&lt;br /&gt;
|-&lt;br /&gt;
| Amogh, Matt, Barrett, Rahul&lt;br /&gt;
| 12th November&lt;br /&gt;
| Design Outline, Initial Draft&lt;br /&gt;
| 0.1&lt;br /&gt;
|-&lt;br /&gt;
| Rahul&lt;br /&gt;
| 12th November&lt;br /&gt;
| Implementation Plan&lt;br /&gt;
| 0.2&lt;br /&gt;
|-&lt;br /&gt;
| Matt&lt;br /&gt;
| 13th November&lt;br /&gt;
| Edit, Reorganize Doc&lt;br /&gt;
| 0.3&lt;br /&gt;
|-&lt;br /&gt;
| Barret&lt;br /&gt;
| 13th November&lt;br /&gt;
| UI Mockup&lt;br /&gt;
| 0.4&lt;br /&gt;
|-&lt;br /&gt;
| Amogh&lt;br /&gt;
| 13th November&lt;br /&gt;
| Wiki Draft&lt;br /&gt;
| 0.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== What's it about? ==&lt;br /&gt;
In the first round of Expertiza reviews, we ask reviewers to give authors some guidance on how to improve their work.  Then in the second round, reviewers rate how well authors have followed their suggestions.  We could carry the interaction one step further if we asked authors to make up a revision plan based on the first-round reviews.  That is, authors would say what they were planning to do to improve their work.  Then second-round reviewers would assess how well they did it.  In essence, this means that authors would be adding criteria to the second-round rubric that applied only to their submission.  We are interested in having this implemented and used in a class so that we can study its effect.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== What needs to be done? ==&lt;br /&gt;
* Develop UI for authors to create new questions to add to the second round-rubric. This should be a form that includes the following:&lt;br /&gt;
** A description of the revision plan. Eg: We will add feature X to address issues a,b and c. We will modify feature Y and expect it to resolve errors d, c and e.&lt;br /&gt;
** One or more questions for every proposed improvement. Example:&lt;br /&gt;
*** How effectively did feature X address / solve issues a, b and c?&lt;br /&gt;
*** Did modification of feature Y resolve error d?&lt;br /&gt;
* Every new question must be linked to the second-round questionnaire.&lt;br /&gt;
* Every new question must be linked to the author’s submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
In the 2nd round of reviews, the Author should be able to add a statement to direct towards Author selected improvements from Round 1 to Round 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Motivation ==&lt;br /&gt;
The OSS and Final projects are different for every team. From a reviewers perspective, not all questions make sense for all projects. The motivation behind this project is:&lt;br /&gt;
* Questions unique to each project gives the reviewers a perspective on the author’s objectives.&lt;br /&gt;
* Allow the Author to get feedback on whether or not they accomplished their self-directed goal.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Criteria for completion ==&lt;br /&gt;
# Direct user to Revision Improvement Questionnaire.&lt;br /&gt;
# Create a form for a Assignment Team to add Questions to a Questionnaire that are specific to that Submission.&lt;br /&gt;
# Append Revision Improvement Questionnaire to 2nd Round Review Questionnaire.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Implementation Plan ==&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
=== Files to be modified ===&lt;br /&gt;
==== Questionnaire ====&lt;br /&gt;
* questionnaire_controller.rb&lt;br /&gt;
* questionnaire.rb&lt;br /&gt;
* author_review_questionnaire.rb ( doesn’t exist, needs to be created and named appropriately )&lt;br /&gt;
* questionnaires/*.erb&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==== Submitted Content ====&lt;br /&gt;
* submitted_content_controller.rb&lt;br /&gt;
* submission_record.rb&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1875_Revision_Planning_Tool&amp;diff=119704</id>
		<title>E1875 Revision Planning Tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1875_Revision_Planning_Tool&amp;diff=119704"/>
		<updated>2018-11-13T18:43:31Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Revision History ==&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Date&lt;br /&gt;
! Reason for change&lt;br /&gt;
! Version?&lt;br /&gt;
|-&lt;br /&gt;
| Amogh, Matt, Barrett, Rahul&lt;br /&gt;
| 12th November&lt;br /&gt;
| Design Outline, Initial Draft&lt;br /&gt;
| 0.1&lt;br /&gt;
|-&lt;br /&gt;
| Rahul&lt;br /&gt;
| 12th November&lt;br /&gt;
| Implementation Plan&lt;br /&gt;
| 0.2&lt;br /&gt;
|-&lt;br /&gt;
| Matt&lt;br /&gt;
| 13th November&lt;br /&gt;
| Edit, Reorganize Doc&lt;br /&gt;
| 0.3&lt;br /&gt;
|-&lt;br /&gt;
| Barret&lt;br /&gt;
| 13th November&lt;br /&gt;
| UI Mockup&lt;br /&gt;
| 0.4&lt;br /&gt;
|-&lt;br /&gt;
| Amogh&lt;br /&gt;
| 13th November&lt;br /&gt;
| Wiki Draft&lt;br /&gt;
| 0.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== What's it about? ==&lt;br /&gt;
In the first round of Expertiza reviews, we ask reviewers to give authors some guidance on how to improve their work.  Then in the second round, reviewers rate how well authors have followed their suggestions.  We could carry the interaction one step further if we asked authors to make up a revision plan based on the first-round reviews.  That is, authors would say what they were planning to do to improve their work.  Then second-round reviewers would assess how well they did it.  In essence, this means that authors would be adding criteria to the second-round rubric that applied only to their submission.  We are interested in having this implemented and used in a class so that we can study its effect.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== What needs to be done? ==&lt;br /&gt;
* Develop UI for authors to create new questions to add to the second round-rubric. This should be a form that includes the following:&lt;br /&gt;
** A description of the revision plan. Eg: We will add feature X to address issues a,b and c. We will modify feature Y and expect it to resolve errors d, c and e.&lt;br /&gt;
** One or more questions for every proposed improvement. Example:&lt;br /&gt;
*** How effectively did feature X address / solve issues a, b and c?&lt;br /&gt;
*** Did modification of feature Y resolve error d?&lt;br /&gt;
* Every new question must be linked to the second-round questionnaire.&lt;br /&gt;
* Every new question must be linked to the author’s submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
In the 2nd round of reviews, the Author should be able to add a statement to direct towards Author selected improvements from Round 1 to Round 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Motivation ==&lt;br /&gt;
The OSS and Final projects are different for every team. From a reviewers perspective, not all questions make sense for all projects. The motivation behind this project is:&lt;br /&gt;
* Questions unique to each project gives the reviewers a perspective on the author’s objectives.&lt;br /&gt;
* Allow the Author to get feedback on whether or not they accomplished their self-directed goal.&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1875_Revision_Planning_Tool&amp;diff=119703</id>
		<title>E1875 Revision Planning Tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1875_Revision_Planning_Tool&amp;diff=119703"/>
		<updated>2018-11-13T18:42:45Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Revision History ==&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Date&lt;br /&gt;
! Reason for change&lt;br /&gt;
! Version?&lt;br /&gt;
|-&lt;br /&gt;
| Amogh, Matt, Barrett, Rahul&lt;br /&gt;
| 12th November&lt;br /&gt;
| Design Outline, Initial Draft&lt;br /&gt;
| 0.1&lt;br /&gt;
|-&lt;br /&gt;
| Rahul&lt;br /&gt;
| 12th November&lt;br /&gt;
| Implementation Plan&lt;br /&gt;
| 0.2&lt;br /&gt;
|-&lt;br /&gt;
| Matt&lt;br /&gt;
| 13th November&lt;br /&gt;
| Edit, Reorganize Doc&lt;br /&gt;
| 0.3&lt;br /&gt;
|-&lt;br /&gt;
| Barret&lt;br /&gt;
| 13th November&lt;br /&gt;
| UI Mockup&lt;br /&gt;
| 0.4&lt;br /&gt;
|-&lt;br /&gt;
| Amogh&lt;br /&gt;
| 13th November&lt;br /&gt;
| Wiki Draft&lt;br /&gt;
| 0.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== What's it about? ==&lt;br /&gt;
In the first round of Expertiza reviews, we ask reviewers to give authors some guidance on how to improve their work.  Then in the second round, reviewers rate how well authors have followed their suggestions.  We could carry the interaction one step further if we asked authors to make up a revision plan based on the first-round reviews.  That is, authors would say what they were planning to do to improve their work.  Then second-round reviewers would assess how well they did it.  In essence, this means that authors would be adding criteria to the second-round rubric that applied only to their submission.  We are interested in having this implemented and used in a class so that we can study its effect.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== What needs to be done? ==&lt;br /&gt;
# Develop UI for authors to create new questions to add to the second round-rubric. This should be a form that includes the following:&lt;br /&gt;
## A description of the revision plan. Eg: We will add feature X to address issues a,b and c. We will modify feature Y and expect it to resolve errors d, c and e.&lt;br /&gt;
## One or more questions for every proposed improvement. Example:&lt;br /&gt;
### How effectively did feature X address / solve issues a, b and c?&lt;br /&gt;
### Did modification of feature Y resolve error d?&lt;br /&gt;
# Every new question must be linked to the second-round questionnaire.&lt;br /&gt;
# Every new question must be linked to the author’s submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
In the 2nd round of reviews, the Author should be able to add a statement to direct towards Author selected improvements from Round 1 to Round 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Motivation ==&lt;br /&gt;
The OSS and Final projects are different for every team. From a reviewers perspective, not all questions make sense for all projects. The motivation behind this project is:&lt;br /&gt;
* Questions unique to each project gives the reviewers a perspective on the author’s objectives.&lt;br /&gt;
* Allow the Author to get feedback on whether or not they accomplished their self-directed goal.&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1875_Revision_Planning_Tool&amp;diff=119702</id>
		<title>E1875 Revision Planning Tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1875_Revision_Planning_Tool&amp;diff=119702"/>
		<updated>2018-11-13T18:42:14Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Revision History ==&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Date&lt;br /&gt;
! Reason for change&lt;br /&gt;
! Version?&lt;br /&gt;
|-&lt;br /&gt;
| Amogh, Matt, Barrett, Rahul&lt;br /&gt;
| 12th November&lt;br /&gt;
| Design Outline, Initial Draft&lt;br /&gt;
| 0.1&lt;br /&gt;
|-&lt;br /&gt;
| Rahul&lt;br /&gt;
| 12th November&lt;br /&gt;
| Implementation Plan&lt;br /&gt;
| 0.2&lt;br /&gt;
|-&lt;br /&gt;
| Matt&lt;br /&gt;
| 13th November&lt;br /&gt;
| Edit, Reorganize Doc&lt;br /&gt;
| 0.3&lt;br /&gt;
|-&lt;br /&gt;
| Barret&lt;br /&gt;
| 13th November&lt;br /&gt;
| UI Mockup&lt;br /&gt;
| 0.4&lt;br /&gt;
|-&lt;br /&gt;
| Amogh&lt;br /&gt;
| 13th November&lt;br /&gt;
| Wiki Draft&lt;br /&gt;
| 0.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== What's it about? ==&lt;br /&gt;
In the first round of Expertiza reviews, we ask reviewers to give authors some guidance on how to improve their work.  Then in the second round, reviewers rate how well authors have followed their suggestions.  We could carry the interaction one step further if we asked authors to make up a revision plan based on the first-round reviews.  That is, authors would say what they were planning to do to improve their work.  Then second-round reviewers would assess how well they did it.  In essence, this means that authors would be adding criteria to the second-round rubric that applied only to their submission.  We are interested in having this implemented and used in a class so that we can study its effect.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== What needs to be done? ==&lt;br /&gt;
# Develop UI for authors to create new questions to add to the second round-rubric. This should be a form that includes the following:&lt;br /&gt;
  ## A description of the revision plan. Eg: We will add feature X to address issues a,b and c. We will modify feature Y and expect it to resolve errors d, c and e.&lt;br /&gt;
  ## One or more questions for every proposed improvement. Example:&lt;br /&gt;
    ### How effectively did feature X address / solve issues a, b and c?&lt;br /&gt;
    ### Did modification of feature Y resolve error d?&lt;br /&gt;
# Every new question must be linked to the second-round questionnaire.&lt;br /&gt;
# Every new question must be linked to the author’s submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
In the 2nd round of reviews, the Author should be able to add a statement to direct towards Author selected improvements from Round 1 to Round 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Motivation ==&lt;br /&gt;
The OSS and Final projects are different for every team. From a reviewers perspective, not all questions make sense for all projects. The motivation behind this project is:&lt;br /&gt;
* Questions unique to each project gives the reviewers a perspective on the author’s objectives.&lt;br /&gt;
* Allow the Author to get feedback on whether or not they accomplished their self-directed goal.&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1875_Revision_Planning_Tool&amp;diff=119701</id>
		<title>E1875 Revision Planning Tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1875_Revision_Planning_Tool&amp;diff=119701"/>
		<updated>2018-11-13T18:37:17Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Revision History ==&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Date&lt;br /&gt;
! Reason for change&lt;br /&gt;
! Version?&lt;br /&gt;
|-&lt;br /&gt;
| Amogh, Matt, Barrett, Rahul&lt;br /&gt;
| 12th November&lt;br /&gt;
| Design Outline, Initial Draft&lt;br /&gt;
| 0.1&lt;br /&gt;
|-&lt;br /&gt;
| Rahul&lt;br /&gt;
| 12th November&lt;br /&gt;
| Implementation Plan&lt;br /&gt;
| 0.2&lt;br /&gt;
|-&lt;br /&gt;
| Matt&lt;br /&gt;
| 13th November&lt;br /&gt;
| Edit, Reorganize Doc&lt;br /&gt;
| 0.3&lt;br /&gt;
|-&lt;br /&gt;
| Barret&lt;br /&gt;
| 13th November&lt;br /&gt;
| UI Mockup&lt;br /&gt;
| 0.4&lt;br /&gt;
|-&lt;br /&gt;
| Amogh&lt;br /&gt;
| 13th November&lt;br /&gt;
| Wiki Draft&lt;br /&gt;
| 0.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
In the 2nd round of reviews, the Author should be able to add a statement to direct towards Author selected improvements from Round 1 to Round 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Motivation ==&lt;br /&gt;
The OSS and Final projects are different for every team. From a reviewers perspective, not all questions make sense for all projects. The motivation behind this project is:&lt;br /&gt;
* Questions unique to each project gives the reviewers a perspective on the author’s objectives.&lt;br /&gt;
* Allow the Author to get feedback on whether or not they accomplished their self-directed goal.&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1875_Revision_Planning_Tool&amp;diff=119700</id>
		<title>E1875 Revision Planning Tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1875_Revision_Planning_Tool&amp;diff=119700"/>
		<updated>2018-11-13T18:32:54Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Revision History ==&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Date&lt;br /&gt;
! Reason for change&lt;br /&gt;
! Version?&lt;br /&gt;
|-&lt;br /&gt;
| Amogh, Matt, Barrett, Rahul&lt;br /&gt;
| 12th November&lt;br /&gt;
| Design Outline, Initial Draft&lt;br /&gt;
| 0.1&lt;br /&gt;
|-&lt;br /&gt;
| Rahul&lt;br /&gt;
| 12th November&lt;br /&gt;
| Implementation Plan&lt;br /&gt;
| 0.2&lt;br /&gt;
|-&lt;br /&gt;
| Matt&lt;br /&gt;
| 13th November&lt;br /&gt;
| Edit, Reorganize Doc&lt;br /&gt;
| 0.3&lt;br /&gt;
|-&lt;br /&gt;
| Barret&lt;br /&gt;
| 13th November&lt;br /&gt;
| UI Mockup&lt;br /&gt;
| 0.4&lt;br /&gt;
|-&lt;br /&gt;
| Amogh&lt;br /&gt;
| 13th November&lt;br /&gt;
| Wiki Draft&lt;br /&gt;
| 0.5&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1875_Revision_Planning_Tool&amp;diff=119699</id>
		<title>E1875 Revision Planning Tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1875_Revision_Planning_Tool&amp;diff=119699"/>
		<updated>2018-11-13T18:32:38Z</updated>

		<summary type="html">&lt;p&gt;Atewari: Created page with &amp;quot;== Revision History == &amp;lt;/br&amp;gt;  {| class=&amp;quot;wikitable&amp;quot; |- ! Name ! Date ! Reason for change ! Version? |- | Amogh, Matt, Barrett, Rahul | 12th November | Design Outline, Initial Draf...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Revision History ==&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Date&lt;br /&gt;
! Reason for change&lt;br /&gt;
! Version?&lt;br /&gt;
|-&lt;br /&gt;
| Amogh, Matt, Barrett, Rahul&lt;br /&gt;
| 12th November&lt;br /&gt;
| Design Outline, Initial Draft&lt;br /&gt;
| 0.1&lt;br /&gt;
|-&lt;br /&gt;
| Rahul&lt;br /&gt;
| 12th November&lt;br /&gt;
| Implementation Plan&lt;br /&gt;
| 0.2&lt;br /&gt;
|-&lt;br /&gt;
| Matt&lt;br /&gt;
| 13th November&lt;br /&gt;
| Edit, Reorganize Doc&lt;br /&gt;
| 0.3&lt;br /&gt;
|-&lt;br /&gt;
| Barret&lt;br /&gt;
| 13th November&lt;br /&gt;
| UI Mockup&lt;br /&gt;
| 0.4&lt;br /&gt;
|-&lt;br /&gt;
| Amogh&lt;br /&gt;
| 13th November&lt;br /&gt;
| Wiki Draft&lt;br /&gt;
| 0.5&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1831_OSS_Project_Teal_Email_Notifications_Enhancements&amp;diff=118942</id>
		<title>E1831 OSS Project Teal Email Notifications Enhancements</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1831_OSS_Project_Teal_Email_Notifications_Enhancements&amp;diff=118942"/>
		<updated>2018-11-09T01:06:38Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E1831 OSS assignment for Fall 2018, CSC 517.&lt;br /&gt;
&lt;br /&gt;
== About Expertiza ==&lt;br /&gt;
[https://expertiza.ncsu.edu/ Expertiza] is an open source project based on [https://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
== What has been done previously ==&lt;br /&gt;
Students and instructors are notified of various events by e-mail, e.g., creation of a new account, submission of a review on their work, or updating of work that they have reviewed. This project is focused on adding new email functionalities.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
* Issue [https://github.com/expertiza/expertiza/issues/296 #296]: Send out an email to the invitee when a participant sends out an invitation to another participant to join a team. The student who issued the invitation should also be e-mailed when the invitee joins the team. And also, when a student responds to a teammate advertisement, the person who created the advertisement must be notified by email. In general, all activity on ad responses and invitations should be reported to the other party by email (unless these emails are turned off in a (new) profile field).&lt;br /&gt;
* Notify an instructor by e-mail when a student suggests a topic.&lt;br /&gt;
* Issue [https://github.com/expertiza/expertiza/issues/87 #87]: Create an option (in the instructor’s profile) to get a copy of emails being sent to students.&lt;br /&gt;
&lt;br /&gt;
== Files modified under in this project ==&lt;br /&gt;
==== Controllers ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-f186adbcad8c7d0322f09c6448128d3d profile_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4e05ad0d64e6100656b63ad1e78f32c5 users_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-3f9708b6695fc195f497d7279229ce58 suggestions_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4d4587f69e7597b0876f8bd8620e4b3a invitations_controller.rb]&lt;br /&gt;
==== Views ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-618b778ac502cdb33996e09307ea10f5 _invitation_accepted_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4cf05cb698ae8bf7d018d98d32ac91ef _invitation_declined_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-b469a046eb2ce24c8bcebe67e6213ce9 _invitation_pending_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-95a9a005ee228f1bdfa926dd7d2e6ed6 new_suggested_topic.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-a847769ab4f73b3b644c52acd4aa6430 notify_grade_conflict_message.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-589c871157f8b5486be75d6846db3861 _new_submission_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-806051e10c2e890dccd7687300dfddf9 _submission_deadline_test_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-7ce11a3f8a2df2ad7295382fdd8f7909 _additional_links.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-7725211746ade7c4353148f9f91c9170 add.js.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-799a00b67bb0213bee389b71adaf4c7c _prefs.html.erb]&lt;br /&gt;
==== Mailers ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-6338cac8af5d0dac3dd6cf3183d97ce1 mailer_helper.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-9d59b3dd49f673876917117e94433d4e delayed_mailer.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-5354a099931d64748967998ea42d1fc1 mailer.rb]&lt;br /&gt;
==== Models ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-f2caf2e29f94ec94cb27bdb86ec85d40 response.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4676c008b11a5480d73d4a6de01e45b9 user.rb]&lt;br /&gt;
==== Database Migrations ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-9c48d33153eb16cc236ebf7318e77121 _add_copy_of_all_emails_flag_to_user.rb]&lt;br /&gt;
==== Specs ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-3a17ddf9d828caa60f11423f20fb88a9 factories.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-da946a02c81d553b070e087bcfb8051b login_helper.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4d891af414d69728e3576d12df5cfe45 due_date_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-0681f27c5662f797060be86cd862dd1f participant_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-12b107c16792b9ecba685e51b51826f1 user_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-ac62140c4e9c597ea8ac6d51d7f486c0 suggestion_controller_spec.rb]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
==== Sending mail to Instructor on creation of a new suggestion ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Suggestion_controller_spec.jpg]]&amp;lt;br/&amp;gt;&lt;br /&gt;
On creation of a new suggestion, a mail should be sent to the instructor. To establish this, we test whether the create suggestion method calls a mail_instructor method. Once the mail_instructor method is called, we test the mail_instructor method to have called the mailer with the correct parameters.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Option for instructor to receive copy of all emails ====&lt;br /&gt;
1. Create a new account as an instructor on the deployment.&amp;lt;br/&amp;gt;&lt;br /&gt;
2. Log in as instructor.&amp;lt;br/&amp;gt;&lt;br /&gt;
3. Got to profile page.&amp;lt;br/&amp;gt;&lt;br /&gt;
4. Check the box that says 'Send me copies of all the emails'.&amp;lt;br/&amp;gt;&lt;br /&gt;
5. Log in as 'student2064' with password 'password'.&amp;lt;br/&amp;gt;&lt;br /&gt;
6. Trigger any action that may result in mail being sent to the student.&amp;lt;br/&amp;gt;&lt;br /&gt;
7. Log in to instructor's email to check if copy of the same email has been received.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solutions Implemented ==&lt;br /&gt;
&lt;br /&gt;
==== Sending mail to Instructor on creation of a new suggestion ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_2.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
As part of the email that is to be sent to the instructor, an important piece of information is the proposer. When a suggestion is made by a student, they can choose to make the suggestion in anonymous mode. The function set_proposer within suggestions controller determines whether the user has checked anonymous suggestion and then assigns the user_id to the proposer. In case, the student has chosen to make an anonymous suggestion, the proposer variable is set as the string “Anonymous”.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_3.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
To send the email, a mail_instructor function was created. This function requires the suggestion title, proposer, and the email of the receiver. &lt;br /&gt;
# The proposer is set using the set_proposer function.&lt;br /&gt;
# The suggestion title is passed through @suggestion.&lt;br /&gt;
# The assignment to which this suggestion is being made references to the instructor who created the assignment through instructor_id.&lt;br /&gt;
This function then calls new_suggested_topic function in the mailer.rb file to send the mail with the information.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_4.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The mailer.rb file also gets a new function new_suggested_topic referenced above.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_5.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The last change made to suggestions controller is calling the mail_instructor method in the create suggestion method. If the assignment references an instructor, the mail method is called on any suggestion being saved. The ‘if’ condition here is put in for a test condition where an assignment is created through the factories and this assignment does not reference an instructor. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_6.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The final change is the addition of a new file which contains the content and formatting of the mail being sent to the instructor.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Option for instructor to create a participant which does not exist ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_1.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The precondition here is that there is no participant and the instructor can add a non-existent participant. Further, a flash message is added when instructor adds a new participant. Instructor is forwarded to the user creation page by the corresponding link.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_2.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
User should have the provision to review projects. For that, the user needs to access the review page. A link has been added just for this purpose. The link would take the user to the respective review page.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_3.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Link for submission deadline reminder&lt;br /&gt;
User should get a deadline reminder in e-mail once a deadline to review is nearing. Once a user gets a deadline reminder e-mail, the user could review a team then. Email should have the link to review a team.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Modifications made to the email that the instructor receives for contradicting reviews ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
More functionalities added to the e-mail that the instructor receives for contradicting reviews. The average scores of the total reviews done previously and the score of the new review are included in this. It looks so much better with the bullet points included, thus increasing the readability.&lt;br /&gt;
[[File:Karan_4.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_5.jpg]]&amp;lt;br/&amp;gt;&lt;br /&gt;
response.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_6.jpg]] &amp;lt;br/&amp;gt;&lt;br /&gt;
notify_grade_conflict_message.html.erb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== E-mail to the invitee to join a team ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Participants would require other participants to team up for a project. In such a case, a participant would invite another participant to join a team. Subsequently, an e-mail should be received to join the team. The e-mail should have the join request with it to join the group. It is important that the e-mail is received by the receiver when a participant student invites him.&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_7.png]]&amp;lt;br/&amp;gt;&lt;br /&gt;
invitations_controller.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_8.png]] &amp;lt;br/&amp;gt;&lt;br /&gt;
mailer_helper.rb&lt;br /&gt;
&lt;br /&gt;
==== Ad responses and invitations reported by e-mail ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
When a student responds to a teammate advertisement, the person who created the advertisement must be notified by email. Three new files have been created to send e-mails to both the inviter and the invitee, the three files being accept, decline and pending. These three would be the responses of the invitations to join the team.&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_9.jpg]] &amp;lt;br/&amp;gt;&lt;br /&gt;
_invitation_accepted_html.html.erb &amp;lt;br/&amp;gt;&lt;br /&gt;
_invitation_declined_html.html.erb &amp;lt;br/&amp;gt;&lt;br /&gt;
_invitation_pending_html.html.erb &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Option for the instructor to get a copy of emails being sent to the student ====&lt;br /&gt;
Any activity done on the assignment by a student can be viewed by the instructor. The instructor can make suggestions to the students. An e-mail could be sent by the instructor to the students regarding the activities done on the assignment. Now, the instructor has the option to choose to get all the e-mails that have been sent to the participants (students).&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_10.jpg]] &amp;lt;br/&amp;gt;&lt;br /&gt;
profile_controller.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_11.jpg]] &amp;lt;br/&amp;gt;&lt;br /&gt;
users_controller.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_12.jpg]] &amp;lt;br/&amp;gt;&lt;br /&gt;
delayed_mailer.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_13.jpg]] &amp;lt;br/&amp;gt;&lt;br /&gt;
mailer.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_14.jpg]] &amp;lt;br/&amp;gt;&lt;br /&gt;
user.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_15.jpg]] &amp;lt;br/&amp;gt;&lt;br /&gt;
_prefs.html.erb.rb&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1831_OSS_Project_Teal_Email_Notifications_Enhancements&amp;diff=118941</id>
		<title>E1831 OSS Project Teal Email Notifications Enhancements</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1831_OSS_Project_Teal_Email_Notifications_Enhancements&amp;diff=118941"/>
		<updated>2018-11-09T00:54:56Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E1831 OSS assignment for Fall 2018, CSC 517.&lt;br /&gt;
&lt;br /&gt;
== About Expertiza ==&lt;br /&gt;
[https://expertiza.ncsu.edu/ Expertiza] is an open source project based on [https://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
== What has been done previously ==&lt;br /&gt;
Students and instructors are notified of various events by e-mail, e.g., creation of a new account, submission of a review on their work, or updating of work that they have reviewed. This project is focused on adding new email functionalities.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
* Issue [https://github.com/expertiza/expertiza/issues/296 #296]: Send out an email to the invitee when a participant sends out an invitation to another participant to join a team. The student who issued the invitation should also be e-mailed when the invitee joins the team. And also, when a student responds to a teammate advertisement, the person who created the advertisement must be notified by email. In general, all activity on ad responses and invitations should be reported to the other party by email (unless these emails are turned off in a (new) profile field).&lt;br /&gt;
* Notify an instructor by e-mail when a student suggests a topic.&lt;br /&gt;
* Issue [https://github.com/expertiza/expertiza/issues/87 #87]: Create an option (in the instructor’s profile) to get a copy of emails being sent to students.&lt;br /&gt;
&lt;br /&gt;
== Files modified under in this project ==&lt;br /&gt;
==== Controllers ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-f186adbcad8c7d0322f09c6448128d3d profile_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4e05ad0d64e6100656b63ad1e78f32c5 users_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-3f9708b6695fc195f497d7279229ce58 suggestions_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4d4587f69e7597b0876f8bd8620e4b3a invitations_controller.rb]&lt;br /&gt;
==== Views ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-618b778ac502cdb33996e09307ea10f5 _invitation_accepted_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4cf05cb698ae8bf7d018d98d32ac91ef _invitation_declined_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-b469a046eb2ce24c8bcebe67e6213ce9 _invitation_pending_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-95a9a005ee228f1bdfa926dd7d2e6ed6 new_suggested_topic.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-a847769ab4f73b3b644c52acd4aa6430 notify_grade_conflict_message.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-589c871157f8b5486be75d6846db3861 _new_submission_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-806051e10c2e890dccd7687300dfddf9 _submission_deadline_test_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-7ce11a3f8a2df2ad7295382fdd8f7909 _additional_links.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-7725211746ade7c4353148f9f91c9170 add.js.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-799a00b67bb0213bee389b71adaf4c7c _prefs.html.erb]&lt;br /&gt;
==== Mailers ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-6338cac8af5d0dac3dd6cf3183d97ce1 mailer_helper.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-9d59b3dd49f673876917117e94433d4e delayed_mailer.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-5354a099931d64748967998ea42d1fc1 mailer.rb]&lt;br /&gt;
==== Models ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-f2caf2e29f94ec94cb27bdb86ec85d40 response.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4676c008b11a5480d73d4a6de01e45b9 user.rb]&lt;br /&gt;
==== Database Migrations ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-9c48d33153eb16cc236ebf7318e77121 _add_copy_of_all_emails_flag_to_user.rb]&lt;br /&gt;
==== Specs ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-3a17ddf9d828caa60f11423f20fb88a9 factories.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-da946a02c81d553b070e087bcfb8051b login_helper.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4d891af414d69728e3576d12df5cfe45 due_date_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-0681f27c5662f797060be86cd862dd1f participant_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-12b107c16792b9ecba685e51b51826f1 user_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-ac62140c4e9c597ea8ac6d51d7f486c0 suggestion_controller_spec.rb]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
==== Sending mail to Instructor on creation of a new suggestion ====&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
[[File:Suggestion_controller_spec.jpg]]&amp;lt;br/&amp;gt;&lt;br /&gt;
On creation of a new suggestion, a mail should be sent to the instructor. To establish this, we test whether the create suggestion method calls a mail_instructor method. Once the mail_instructor method is called, we test the mail_instructor method to have called the mailer with the correct parameters.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Option for instructor to receive copy of all emails ====&lt;br /&gt;
1. Create a new account as an instructor on the deployment.&lt;br /&gt;
2. Log in as instructor.&lt;br /&gt;
3. Got to profile page.&lt;br /&gt;
4. Check the box that says 'Send me copies of all the emails'.&lt;br /&gt;
5. Log in as 'student2064' with password 'password'.&lt;br /&gt;
6. Trigger any action that may result in mail being sent to the student.&lt;br /&gt;
7. Log in to instructor's email to check if copy of the same email has been received.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solutions Implemented ==&lt;br /&gt;
&lt;br /&gt;
==== Sending mail to Instructor on creation of a new suggestion ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_2.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
As part of the email that is to be sent to the instructor, an important piece of information is the proposer. When a suggestion is made by a student, they can choose to make the suggestion in anonymous mode. The function set_proposer within suggestions controller determines whether the user has checked anonymous suggestion and then assigns the user_id to the proposer. In case, the student has chosen to make an anonymous suggestion, the proposer variable is set as the string “Anonymous”.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_3.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
To send the email, a mail_instructor function was created. This function requires the suggestion title, proposer, and the email of the receiver. &lt;br /&gt;
# The proposer is set using the set_proposer function.&lt;br /&gt;
# The suggestion title is passed through @suggestion.&lt;br /&gt;
# The assignment to which this suggestion is being made references to the instructor who created the assignment through instructor_id.&lt;br /&gt;
This function then calls new_suggested_topic function in the mailer.rb file to send the mail with the information.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_4.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The mailer.rb file also gets a new function new_suggested_topic referenced above.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_5.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The last change made to suggestions controller is calling the mail_instructor method in the create suggestion method. If the assignment references an instructor, the mail method is called on any suggestion being saved. The ‘if’ condition here is put in for a test condition where an assignment is created through the factories and this assignment does not reference an instructor. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_6.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The final change is the addition of a new file which contains the content and formatting of the mail being sent to the instructor.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Option for instructor to create a participant which does not exist ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_1.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The precondition here is that there is no participant and the instructor can add a non-existent participant. Further, a flash message is added when instructor adds a new participant. Instructor is forwarded to the user creation page by the corresponding link.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_2.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
User should have the provision to review projects. For that, the user needs to access the review page. A link has been added just for this purpose. The link would take the user to the respective review page.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_3.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Link for submission deadline reminder&lt;br /&gt;
User should get a deadline reminder in e-mail once a deadline to review is nearing. Once a user gets a deadline reminder e-mail, the user could review a team then. Email should have the link to review a team.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Modifications made to the email that the instructor receives for contradicting reviews ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
More functionalities added to the e-mail that the instructor receives for contradicting reviews. The average scores of the total reviews done previously and the score of the new review are included in this. It looks so much better with the bullet points included, thus increasing the readability.&lt;br /&gt;
[[File:Karan_4.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_5.jpg]]&amp;lt;br/&amp;gt;&lt;br /&gt;
response.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_6.jpg]] &amp;lt;br/&amp;gt;&lt;br /&gt;
notify_grade_conflict_message.html.erb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== E-mail to the invitee to join a team ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Participants would require other participants to team up for a project. In such a case, a participant would invite another participant to join a team. Subsequently, an e-mail should be received to join the team. The e-mail should have the join request with it to join the group. It is important that the e-mail is received by the receiver when a participant student invites him.&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_7.png]]&amp;lt;br/&amp;gt;&lt;br /&gt;
invitations_controller.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_8.png]] &amp;lt;br/&amp;gt;&lt;br /&gt;
mailer_helper.rb&lt;br /&gt;
&lt;br /&gt;
==== Ad responses and invitations reported by e-mail ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
When a student responds to a teammate advertisement, the person who created the advertisement must be notified by email. Three new files have been created to send e-mails to both the inviter and the invitee, the three files being accept, decline and pending. These three would be the responses of the invitations to join the team.&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_9.jpg]] &amp;lt;br/&amp;gt;&lt;br /&gt;
_invitation_accepted_html.html.erb &amp;lt;br/&amp;gt;&lt;br /&gt;
_invitation_declined_html.html.erb &amp;lt;br/&amp;gt;&lt;br /&gt;
_invitation_pending_html.html.erb &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Option for the instructor to get a copy of emails being sent to the student ====&lt;br /&gt;
Any activity done on the assignment by a student can be viewed by the instructor. The instructor can make suggestions to the students. An e-mail could be sent by the instructor to the students regarding the activities done on the assignment. Now, the instructor has the option to choose to get all the e-mails that have been sent to the participants (students).&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_10.jpg]] &amp;lt;br/&amp;gt;&lt;br /&gt;
profile_controller.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_11.jpg]] &amp;lt;br/&amp;gt;&lt;br /&gt;
users_controller.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_12.jpg]] &amp;lt;br/&amp;gt;&lt;br /&gt;
delayed_mailer.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_13.jpg]] &amp;lt;br/&amp;gt;&lt;br /&gt;
mailer.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_14.jpg]] &amp;lt;br/&amp;gt;&lt;br /&gt;
user.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_15.jpg]] &amp;lt;br/&amp;gt;&lt;br /&gt;
_prefs.html.erb.rb&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1831_OSS_Project_Teal_Email_Notifications_Enhancements&amp;diff=118940</id>
		<title>E1831 OSS Project Teal Email Notifications Enhancements</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1831_OSS_Project_Teal_Email_Notifications_Enhancements&amp;diff=118940"/>
		<updated>2018-11-09T00:50:57Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E1831 OSS assignment for Fall 2018, CSC 517.&lt;br /&gt;
&lt;br /&gt;
== About Expertiza ==&lt;br /&gt;
[https://expertiza.ncsu.edu/ Expertiza] is an open source project based on [https://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
== What has been done previously ==&lt;br /&gt;
Students and instructors are notified of various events by e-mail, e.g., creation of a new account, submission of a review on their work, or updating of work that they have reviewed. This project is focused on adding new email functionalities.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
* Issue [https://github.com/expertiza/expertiza/issues/296 #296]: Send out an email to the invitee when a participant sends out an invitation to another participant to join a team. The student who issued the invitation should also be e-mailed when the invitee joins the team. And also, when a student responds to a teammate advertisement, the person who created the advertisement must be notified by email. In general, all activity on ad responses and invitations should be reported to the other party by email (unless these emails are turned off in a (new) profile field).&lt;br /&gt;
* Notify an instructor by e-mail when a student suggests a topic.&lt;br /&gt;
* Issue [https://github.com/expertiza/expertiza/issues/87 #87]: Create an option (in the instructor’s profile) to get a copy of emails being sent to students.&lt;br /&gt;
&lt;br /&gt;
== Files modified under in this project ==&lt;br /&gt;
==== Controllers ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-f186adbcad8c7d0322f09c6448128d3d profile_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4e05ad0d64e6100656b63ad1e78f32c5 users_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-3f9708b6695fc195f497d7279229ce58 suggestions_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4d4587f69e7597b0876f8bd8620e4b3a invitations_controller.rb]&lt;br /&gt;
==== Views ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-618b778ac502cdb33996e09307ea10f5 _invitation_accepted_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4cf05cb698ae8bf7d018d98d32ac91ef _invitation_declined_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-b469a046eb2ce24c8bcebe67e6213ce9 _invitation_pending_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-95a9a005ee228f1bdfa926dd7d2e6ed6 new_suggested_topic.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-a847769ab4f73b3b644c52acd4aa6430 notify_grade_conflict_message.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-589c871157f8b5486be75d6846db3861 _new_submission_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-806051e10c2e890dccd7687300dfddf9 _submission_deadline_test_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-7ce11a3f8a2df2ad7295382fdd8f7909 _additional_links.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-7725211746ade7c4353148f9f91c9170 add.js.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-799a00b67bb0213bee389b71adaf4c7c _prefs.html.erb]&lt;br /&gt;
==== Mailers ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-6338cac8af5d0dac3dd6cf3183d97ce1 mailer_helper.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-9d59b3dd49f673876917117e94433d4e delayed_mailer.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-5354a099931d64748967998ea42d1fc1 mailer.rb]&lt;br /&gt;
==== Models ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-f2caf2e29f94ec94cb27bdb86ec85d40 response.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4676c008b11a5480d73d4a6de01e45b9 user.rb]&lt;br /&gt;
==== Database Migrations ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-9c48d33153eb16cc236ebf7318e77121 _add_copy_of_all_emails_flag_to_user.rb]&lt;br /&gt;
==== Specs ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-3a17ddf9d828caa60f11423f20fb88a9 factories.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-da946a02c81d553b070e087bcfb8051b login_helper.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4d891af414d69728e3576d12df5cfe45 due_date_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-0681f27c5662f797060be86cd862dd1f participant_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-12b107c16792b9ecba685e51b51826f1 user_spec.rb]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
==== Sending mail to Instructor on creation of a new suggestion ====&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
[[File:Suggestion_controller_spec.jpg]]&amp;lt;br/&amp;gt;&lt;br /&gt;
On creation of a new suggestion, a mail should be sent to the instructor. To establish this, we test whether the create suggestion method calls a mail_instructor method. Once the mail_instructor method is called, we test the mail_instructor method to have called the mailer with the correct parameters.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Option for instructor to receive copy of all emails ====&lt;br /&gt;
1. Create a new account as an instructor on the deployment.&lt;br /&gt;
2. Log in as instructor.&lt;br /&gt;
3. Got to profile page.&lt;br /&gt;
4. Check the box that says 'Send me copies of all the emails'.&lt;br /&gt;
5. Log in as 'student2064' with password 'password'.&lt;br /&gt;
6. Trigger any action that may result in mail being sent to the student.&lt;br /&gt;
7. Log in to instructor's email to check if copy of the same email has been received.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solutions Implemented ==&lt;br /&gt;
&lt;br /&gt;
==== Sending mail to Instructor on creation of a new suggestion ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_2.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
As part of the email that is to be sent to the instructor, an important piece of information is the proposer. When a suggestion is made by a student, they can choose to make the suggestion in anonymous mode. The function set_proposer within suggestions controller determines whether the user has checked anonymous suggestion and then assigns the user_id to the proposer. In case, the student has chosen to make an anonymous suggestion, the proposer variable is set as the string “Anonymous”.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_3.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
To send the email, a mail_instructor function was created. This function requires the suggestion title, proposer, and the email of the receiver. &lt;br /&gt;
# The proposer is set using the set_proposer function.&lt;br /&gt;
# The suggestion title is passed through @suggestion.&lt;br /&gt;
# The assignment to which this suggestion is being made references to the instructor who created the assignment through instructor_id.&lt;br /&gt;
This function then calls new_suggested_topic function in the mailer.rb file to send the mail with the information.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_4.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The mailer.rb file also gets a new function new_suggested_topic referenced above.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_5.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The last change made to suggestions controller is calling the mail_instructor method in the create suggestion method. If the assignment references an instructor, the mail method is called on any suggestion being saved. The ‘if’ condition here is put in for a test condition where an assignment is created through the factories and this assignment does not reference an instructor. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_6.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The final change is the addition of a new file which contains the content and formatting of the mail being sent to the instructor.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Option for instructor to create a participant which does not exist ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_1.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The precondition here is that there is no participant and the instructor can add a non-existent participant. Further, a flash message is added when instructor adds a new participant. Instructor is forwarded to the user creation page by the corresponding link.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_2.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
User should have the provision to review projects. For that, the user needs to access the review page. A link has been added just for this purpose. The link would take the user to the respective review page.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_3.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Link for submission deadline reminder&lt;br /&gt;
User should get a deadline reminder in e-mail once a deadline to review is nearing. Once a user gets a deadline reminder e-mail, the user could review a team then. Email should have the link to review a team.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Modifications made to the email that the instructor receives for contradicting reviews ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
More functionalities added to the e-mail that the instructor receives for contradicting reviews. The average scores of the total reviews done previously and the score of the new review are included in this. It looks so much better with the bullet points included, thus increasing the readability.&lt;br /&gt;
[[File:Karan_4.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_5.jpg]]&amp;lt;br/&amp;gt;&lt;br /&gt;
response.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_6.jpg]] &amp;lt;br/&amp;gt;&lt;br /&gt;
notify_grade_conflict_message.html.erb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== E-mail to the invitee to join a team ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Participants would require other participants to team up for a project. In such a case, a participant would invite another participant to join a team. Subsequently, an e-mail should be received to join the team. The e-mail should have the join request with it to join the group. It is important that the e-mail is received by the receiver when a participant student invites him.&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_7.png]]&amp;lt;br/&amp;gt;&lt;br /&gt;
invitations_controller.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_8.png]] &amp;lt;br/&amp;gt;&lt;br /&gt;
mailer_helper.rb&lt;br /&gt;
&lt;br /&gt;
==== Ad responses and invitations reported by e-mail ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
When a student responds to a teammate advertisement, the person who created the advertisement must be notified by email. Three new files have been created to send e-mails to both the inviter and the invitee, the three files being accept, decline and pending. These three would be the responses of the invitations to join the team.&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_9.jpg]] &amp;lt;br/&amp;gt;&lt;br /&gt;
_invitation_accepted_html.html.erb &amp;lt;br/&amp;gt;&lt;br /&gt;
_invitation_declined_html.html.erb &amp;lt;br/&amp;gt;&lt;br /&gt;
_invitation_pending_html.html.erb &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Option for the instructor to get a copy of emails being sent to the student ====&lt;br /&gt;
Any activity done on the assignment by a student can be viewed by the instructor. The instructor can make suggestions to the students. An e-mail could be sent by the instructor to the students regarding the activities done on the assignment. Now, the instructor has the option to choose to get all the e-mails that have been sent to the participants (students).&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_10.jpg]] &amp;lt;br/&amp;gt;&lt;br /&gt;
profile_controller.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_11.jpg]] &amp;lt;br/&amp;gt;&lt;br /&gt;
users_controller.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_12.jpg]] &amp;lt;br/&amp;gt;&lt;br /&gt;
delayed_mailer.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_13.jpg]] &amp;lt;br/&amp;gt;&lt;br /&gt;
mailer.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_14.jpg]] &amp;lt;br/&amp;gt;&lt;br /&gt;
user.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_15.jpg]] &amp;lt;br/&amp;gt;&lt;br /&gt;
_prefs.html.erb.rb&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Suggestion_controller_spec.jpg&amp;diff=118939</id>
		<title>File:Suggestion controller spec.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Suggestion_controller_spec.jpg&amp;diff=118939"/>
		<updated>2018-11-09T00:48:54Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1831_OSS_Project_Teal_Email_Notifications_Enhancements&amp;diff=118243</id>
		<title>E1831 OSS Project Teal Email Notifications Enhancements</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1831_OSS_Project_Teal_Email_Notifications_Enhancements&amp;diff=118243"/>
		<updated>2018-11-02T21:56:51Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E1831 OSS assignment for Fall 2018, CSC 517.&lt;br /&gt;
&lt;br /&gt;
== About Expertiza ==&lt;br /&gt;
[https://expertiza.ncsu.edu/ Expertiza] is an open source project based on [https://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
== What has been done previously ==&lt;br /&gt;
Students and instructors are notified of various events by e-mail, e.g., creation of a new account, submission of a review on their work, or updating of work that they have reviewed. This project is focused on adding new email functionalities.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
* Issue [https://github.com/expertiza/expertiza/issues/296 #296]: Send out an email to the invitee when a participant sends out an invitation to another participant to join a team. The student who issued the invitation should also be e-mailed when the invitee joins the team. And also, when a student responds to a teammate advertisement, the person who created the advertisement must be notified by email. In general, all activity on ad responses and invitations should be reported to the other party by email (unless these emails are turned off in a (new) profile field).&lt;br /&gt;
* Notify an instructor by e-mail when a student suggests a topic.&lt;br /&gt;
* Issue [https://github.com/expertiza/expertiza/issues/87 #87]: Create an option (in the instructor’s profile) to get a copy of emails being sent to students.&lt;br /&gt;
&lt;br /&gt;
== Files modified under in this project ==&lt;br /&gt;
==== Controllers ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-f186adbcad8c7d0322f09c6448128d3d profile_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4e05ad0d64e6100656b63ad1e78f32c5 users_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-3f9708b6695fc195f497d7279229ce58 suggestions_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4d4587f69e7597b0876f8bd8620e4b3a invitations_controller.rb]&lt;br /&gt;
==== Views ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-618b778ac502cdb33996e09307ea10f5 _invitation_accepted_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4cf05cb698ae8bf7d018d98d32ac91ef _invitation_declined_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-b469a046eb2ce24c8bcebe67e6213ce9 _invitation_pending_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-95a9a005ee228f1bdfa926dd7d2e6ed6 new_suggested_topic.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-a847769ab4f73b3b644c52acd4aa6430 notify_grade_conflict_message.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-589c871157f8b5486be75d6846db3861 _new_submission_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-806051e10c2e890dccd7687300dfddf9 _submission_deadline_test_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-7ce11a3f8a2df2ad7295382fdd8f7909 _additional_links.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-7725211746ade7c4353148f9f91c9170 add.js.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-799a00b67bb0213bee389b71adaf4c7c _prefs.html.erb]&lt;br /&gt;
==== Mailers ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-6338cac8af5d0dac3dd6cf3183d97ce1 mailer_helper.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-9d59b3dd49f673876917117e94433d4e delayed_mailer.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-5354a099931d64748967998ea42d1fc1 mailer.rb]&lt;br /&gt;
==== Models ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-f2caf2e29f94ec94cb27bdb86ec85d40 response.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4676c008b11a5480d73d4a6de01e45b9 user.rb]&lt;br /&gt;
==== Database Migrations ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-9c48d33153eb16cc236ebf7318e77121 _add_copy_of_all_emails_flag_to_user.rb]&lt;br /&gt;
==== Specs ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-3a17ddf9d828caa60f11423f20fb88a9 factories.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-da946a02c81d553b070e087bcfb8051b login_helper.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4d891af414d69728e3576d12df5cfe45 due_date_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-0681f27c5662f797060be86cd862dd1f participant_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-12b107c16792b9ecba685e51b51826f1 user_spec.rb]&lt;br /&gt;
&lt;br /&gt;
== Solutions Implemented ==&lt;br /&gt;
&lt;br /&gt;
==== Sending mail to Instructor on creation of a new suggestion ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_2.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
As part of the email that is to be sent to the instructor, an important piece of information is the proposer. When a suggestion is made by a student, they can choose to make the suggestion in anonymous mode. The function set_proposer within suggestions controller determines whether the user has checked anonymous suggestion and then assigns the user_id to the proposer. In case, the student has chosen to make an anonymous suggestion, the proposer variable is set as the string “Anonymous”.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_3.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
To send the email, a mail_instructor function was created. This function requires the suggestion title, proposer, and the email of the receiver. &lt;br /&gt;
# The proposer is set using the set_proposer function.&lt;br /&gt;
# The suggestion title is passed through @suggestion.&lt;br /&gt;
# The assignment to which this suggestion is being made references to the instructor who created the assignment through instructor_id.&lt;br /&gt;
This function then calls new_suggested_topic function in the mailer.rb file to send the mail with the information.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_4.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The mailer.rb file also gets a new function new_suggested_topic referenced above.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_5.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The last change made to suggestions controller is calling the mail_instructor method in the create suggestion method. If the assignment references an instructor, the mail method is called on any suggestion being saved. The ‘if’ condition here is put in for a test condition where an assignment is created through the factories and this assignment does not reference an instructor. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_6.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The final change is the addition of a new file which contains the content and formatting of the mail being sent to the instructor.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Option for instructor to create a participant which does not exist ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_1.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The precondition here is that there is no participant and the instructor can add a non-existent participant. Further, a flash message is added when instructor adds a new participant. Instructor is forwarded to the user creation page by the corresponding link.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_2.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
User should have the provision to review projects. For that, the user needs to access the review page. A link has been added just for this purpose. The link would take the user to the respective review page.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_3.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Link for submission deadline reminder&lt;br /&gt;
User should get a deadline reminder in e-mail once a deadline to review is nearing. Once a user gets a deadline reminder e-mail, the user could review a team then. Email should have the link to review a team.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Modifications made to the email that the instructor receives for contradicting reviews ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
More functionalities added to the e-mail that the instructor receives for contradicting reviews. The average scores of the total reviews done previously and the score of the new review are included in this. It looks so much better with the bullet points included, thus increasing the readability.&lt;br /&gt;
[[File:Karan_4.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_5.jpg]]&amp;lt;br/&amp;gt;&lt;br /&gt;
response.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_6.jpg]] &amp;lt;br/&amp;gt;&lt;br /&gt;
notify_grade_conflict_message.html.erb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== E-mail to the invitee to join a team ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Participants would require other participants to team up for a project. In such a case, a participant would invite another participant to join a team. Subsequently, an e-mail should be received to join the team. The e-mail should have the join request with it to join the group. It is important that the e-mail is received by the receiver when a participant student invites him.&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_7.jpg]]&amp;lt;br/&amp;gt;&lt;br /&gt;
invitations_controller.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_8.jpg]] &amp;lt;br/&amp;gt;&lt;br /&gt;
mailer_helper.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ad responses and invitations reported by e-mail ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
When a student responds to a teammate advertisement, the person who created the advertisement must be notified by email. Three new files have been created to send e-mails to both the inviter and the invitee, the three files being accept, decline and pending. These three would be the responses of the invitations to join the team.&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_9.jpg]] &amp;lt;br/&amp;gt;&lt;br /&gt;
_invitation_accepted_html.html.erb &amp;lt;br/&amp;gt;&lt;br /&gt;
_invitation_declined_html.html.erb &amp;lt;br/&amp;gt;&lt;br /&gt;
_invitation_pending_html.html.erb &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Option for the instructor to get a copy of emails being sent to the student ====&lt;br /&gt;
Any activity done on the assignment by a student can be viewed by the instructor. The instructor can make suggestions to the students. An e-mail could be sent by the instructor to the students regarding the activities done on the assignment. Now, the instructor has the option to choose to get all the e-mails that have been sent to the participants (students).&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_10.jpg]] &amp;lt;br/&amp;gt;&lt;br /&gt;
profile_controller.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_11.jpg]] &amp;lt;br/&amp;gt;&lt;br /&gt;
users_controller.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_12.jpg]] &amp;lt;br/&amp;gt;&lt;br /&gt;
delayed_mailer.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_13.jpg]] &amp;lt;br/&amp;gt;&lt;br /&gt;
mailer.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_14.jpg]] &amp;lt;br/&amp;gt;&lt;br /&gt;
user.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_15.jpg]] &amp;lt;br/&amp;gt;&lt;br /&gt;
_prefs.html.erb.rb&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1831_OSS_Project_Teal_Email_Notifications_Enhancements&amp;diff=118242</id>
		<title>E1831 OSS Project Teal Email Notifications Enhancements</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1831_OSS_Project_Teal_Email_Notifications_Enhancements&amp;diff=118242"/>
		<updated>2018-11-02T21:56:37Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E1831 OSS assignment for Fall 2018, CSC 517.&lt;br /&gt;
&lt;br /&gt;
== About Expertiza ==&lt;br /&gt;
[https://expertiza.ncsu.edu/ Expertiza] is an open source project based on [https://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
== What has been done previously ==&lt;br /&gt;
Students and instructors are notified of various events by e-mail, e.g., creation of a new account, submission of a review on their work, or updating of work that they have reviewed. This project is focused on adding new email functionalities.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
* Issue [https://github.com/expertiza/expertiza/issues/296 #296]: Send out an email to the invitee when a participant sends out an invitation to another participant to join a team. The student who issued the invitation should also be e-mailed when the invitee joins the team. And also, when a student responds to a teammate advertisement, the person who created the advertisement must be notified by email. In general, all activity on ad responses and invitations should be reported to the other party by email (unless these emails are turned off in a (new) profile field).&lt;br /&gt;
* Notify an instructor by e-mail when a student suggests a topic.&lt;br /&gt;
* Issue [https://github.com/expertiza/expertiza/issues/87 #87]: Create an option (in the instructor’s profile) to get a copy of emails being sent to students.&lt;br /&gt;
&lt;br /&gt;
== Files modified under in this project ==&lt;br /&gt;
==== Controllers ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-f186adbcad8c7d0322f09c6448128d3d profile_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4e05ad0d64e6100656b63ad1e78f32c5 users_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-3f9708b6695fc195f497d7279229ce58 suggestions_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4d4587f69e7597b0876f8bd8620e4b3a invitations_controller.rb]&lt;br /&gt;
==== Views ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-618b778ac502cdb33996e09307ea10f5 _invitation_accepted_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4cf05cb698ae8bf7d018d98d32ac91ef _invitation_declined_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-b469a046eb2ce24c8bcebe67e6213ce9 _invitation_pending_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-95a9a005ee228f1bdfa926dd7d2e6ed6 new_suggested_topic.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-a847769ab4f73b3b644c52acd4aa6430 notify_grade_conflict_message.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-589c871157f8b5486be75d6846db3861 _new_submission_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-806051e10c2e890dccd7687300dfddf9 _submission_deadline_test_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-7ce11a3f8a2df2ad7295382fdd8f7909 _additional_links.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-7725211746ade7c4353148f9f91c9170 add.js.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-799a00b67bb0213bee389b71adaf4c7c _prefs.html.erb]&lt;br /&gt;
==== Mailers ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-6338cac8af5d0dac3dd6cf3183d97ce1 mailer_helper.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-9d59b3dd49f673876917117e94433d4e delayed_mailer.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-5354a099931d64748967998ea42d1fc1 mailer.rb]&lt;br /&gt;
==== Models ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-f2caf2e29f94ec94cb27bdb86ec85d40 response.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4676c008b11a5480d73d4a6de01e45b9 user.rb]&lt;br /&gt;
==== Database Migrations ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-9c48d33153eb16cc236ebf7318e77121 _add_copy_of_all_emails_flag_to_user.rb]&lt;br /&gt;
==== Specs ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-3a17ddf9d828caa60f11423f20fb88a9 factories.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-da946a02c81d553b070e087bcfb8051b login_helper.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4d891af414d69728e3576d12df5cfe45 due_date_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-0681f27c5662f797060be86cd862dd1f participant_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-12b107c16792b9ecba685e51b51826f1 user_spec.rb]&lt;br /&gt;
&lt;br /&gt;
== Solutions Implemented ==&lt;br /&gt;
&lt;br /&gt;
==== Sending mail to Instructor on creation of a new suggestion ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_2.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
As part of the email that is to be sent to the instructor, an important piece of information is the proposer. When a suggestion is made by a student, they can choose to make the suggestion in anonymous mode. The function set_proposer within suggestions controller determines whether the user has checked anonymous suggestion and then assigns the user_id to the proposer. In case, the student has chosen to make an anonymous suggestion, the proposer variable is set as the string “Anonymous”.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_3.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
To send the email, a mail_instructor function was created. This function requires the suggestion title, proposer, and the email of the receiver. &lt;br /&gt;
# The proposer is set using the set_proposer function.&lt;br /&gt;
# The suggestion title is passed through @suggestion.&lt;br /&gt;
# The assignment to which this suggestion is being made references to the instructor who created the assignment through instructor_id.&lt;br /&gt;
This function then calls new_suggested_topic function in the mailer.rb file to send the mail with the information.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_4.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The mailer.rb file also gets a new function new_suggested_topic referenced above.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_5.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The last change made to suggestions controller is calling the mail_instructor method in the create suggestion method. If the assignment references an instructor, the mail method is called on any suggestion being saved. The ‘if’ condition here is put in for a test condition where an assignment is created through the factories and this assignment does not reference an instructor. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_6.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The final change is the addition of a new file which contains the content and formatting of the mail being sent to the instructor.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Option for instructor to create a participant which does not exist ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_1.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The precondition here is that there is no participant and the instructor can add a non-existent participant. Further, a flash message is added when instructor adds a new participant. Instructor is forwarded to the user creation page by the corresponding link.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_2.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
User should have the provision to review projects. For that, the user needs to access the review page. A link has been added just for this purpose. The link would take the user to the respective review page.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_3.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Link for submission deadline reminder&lt;br /&gt;
User should get a deadline reminder in e-mail once a deadline to review is nearing. Once a user gets a deadline reminder e-mail, the user could review a team then. Email should have the link to review a team.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Modifications made to the email that the instructor receives for contradicting reviews ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
More functionalities added to the e-mail that the instructor receives for contradicting reviews. The average scores of the total reviews done previously and the score of the new review are included in this. It looks so much better with the bullet points included, thus increasing the readability.&lt;br /&gt;
[[File:Karan_4.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_5.jpg]]&amp;lt;br/&amp;gt;&lt;br /&gt;
response.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_6.jpg]] &amp;lt;br/&amp;gt;&lt;br /&gt;
notify_grade_conflict_message.html.erb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== E-mail to the invitee to join a team ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Participants would require other participants to team up for a project. In such a case, a participant would invite another participant to join a team. Subsequently, an e-mail should be received to join the team. The e-mail should have the join request with it to join the group. It is important that the e-mail is received by the receiver when a participant student invites him.&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_7.jpg]]&amp;lt;br/&amp;gt;&lt;br /&gt;
invitations_controller.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_8.jpg]] &amp;lt;br/&amp;gt;&lt;br /&gt;
mailer_helper.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ad responses and invitations reported by e-mail ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
When a student responds to a teammate advertisement, the person who created the advertisement must be notified by email. Three new files have been created to send e-mails to both the inviter and the invitee, the three files being accept, decline and pending. These three would be the responses of the invitations to join the team.&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_9.jpg]] &amp;lt;br/&amp;gt;&lt;br /&gt;
_invitation_accepted_html.html.erb &amp;lt;br/&amp;gt;&lt;br /&gt;
_invitation_declined_html.html.erb &amp;lt;br/&amp;gt;&lt;br /&gt;
_invitation_pending_html.html.erb &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Option for the instructor to get a copy of emails being sent to the student ====&lt;br /&gt;
Any activity done on the assignment by a student can be viewed by the instructor. The instructor can make suggestions to the students. An e-mail could be sent by the instructor to the students regarding the activities done on the assignment. Now, the instructor has the option to choose to get all the e-mails that have been sent to the participants (students).&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_10.jpg]] &amp;lt;br/&amp;gt;&lt;br /&gt;
profile_controller.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_11.jpg]] &amp;lt;br/&amp;gt;&lt;br /&gt;
users_controller.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_12.jpg]] &amp;lt;br/&amp;gt;&lt;br /&gt;
delayed_mailer.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_13.jpg]] &amp;lt;br/&amp;gt;&lt;br /&gt;
mailer.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_14.jpg]] &amp;lt;br/&amp;gt;&lt;br /&gt;
user.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_15.jpg]] &amp;lt;br/&amp;gt;&lt;br /&gt;
_pref.html.erb.rb&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1831_OSS_Project_Teal_Email_Notifications_Enhancements&amp;diff=118240</id>
		<title>E1831 OSS Project Teal Email Notifications Enhancements</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1831_OSS_Project_Teal_Email_Notifications_Enhancements&amp;diff=118240"/>
		<updated>2018-11-02T21:55:48Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E1831 OSS assignment for Fall 2018, CSC 517.&lt;br /&gt;
&lt;br /&gt;
== About Expertiza ==&lt;br /&gt;
[https://expertiza.ncsu.edu/ Expertiza] is an open source project based on [https://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
== What has been done previously ==&lt;br /&gt;
Students and instructors are notified of various events by e-mail, e.g., creation of a new account, submission of a review on their work, or updating of work that they have reviewed. This project is focused on adding new email functionalities.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
* Issue [https://github.com/expertiza/expertiza/issues/296 #296]: Send out an email to the invitee when a participant sends out an invitation to another participant to join a team. The student who issued the invitation should also be e-mailed when the invitee joins the team. And also, when a student responds to a teammate advertisement, the person who created the advertisement must be notified by email. In general, all activity on ad responses and invitations should be reported to the other party by email (unless these emails are turned off in a (new) profile field).&lt;br /&gt;
* Notify an instructor by e-mail when a student suggests a topic.&lt;br /&gt;
* Issue [https://github.com/expertiza/expertiza/issues/87 #87]: Create an option (in the instructor’s profile) to get a copy of emails being sent to students.&lt;br /&gt;
&lt;br /&gt;
== Files modified under in this project ==&lt;br /&gt;
==== Controllers ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-f186adbcad8c7d0322f09c6448128d3d profile_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4e05ad0d64e6100656b63ad1e78f32c5 users_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-3f9708b6695fc195f497d7279229ce58 suggestions_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4d4587f69e7597b0876f8bd8620e4b3a invitations_controller.rb]&lt;br /&gt;
==== Views ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-618b778ac502cdb33996e09307ea10f5 _invitation_accepted_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4cf05cb698ae8bf7d018d98d32ac91ef _invitation_declined_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-b469a046eb2ce24c8bcebe67e6213ce9 _invitation_pending_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-95a9a005ee228f1bdfa926dd7d2e6ed6 new_suggested_topic.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-a847769ab4f73b3b644c52acd4aa6430 notify_grade_conflict_message.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-589c871157f8b5486be75d6846db3861 _new_submission_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-806051e10c2e890dccd7687300dfddf9 _submission_deadline_test_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-7ce11a3f8a2df2ad7295382fdd8f7909 _additional_links.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-7725211746ade7c4353148f9f91c9170 add.js.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-799a00b67bb0213bee389b71adaf4c7c _prefs.html.erb]&lt;br /&gt;
==== Mailers ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-6338cac8af5d0dac3dd6cf3183d97ce1 mailer_helper.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-9d59b3dd49f673876917117e94433d4e delayed_mailer.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-5354a099931d64748967998ea42d1fc1 mailer.rb]&lt;br /&gt;
==== Models ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-f2caf2e29f94ec94cb27bdb86ec85d40 response.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4676c008b11a5480d73d4a6de01e45b9 user.rb]&lt;br /&gt;
==== Database Migrations ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-9c48d33153eb16cc236ebf7318e77121 _add_copy_of_all_emails_flag_to_user.rb]&lt;br /&gt;
==== Specs ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-3a17ddf9d828caa60f11423f20fb88a9 factories.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-da946a02c81d553b070e087bcfb8051b login_helper.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4d891af414d69728e3576d12df5cfe45 due_date_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-0681f27c5662f797060be86cd862dd1f participant_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-12b107c16792b9ecba685e51b51826f1 user_spec.rb]&lt;br /&gt;
&lt;br /&gt;
== Solutions Implemented ==&lt;br /&gt;
&lt;br /&gt;
==== Sending mail to Instructor on creation of a new suggestion ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_2.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
As part of the email that is to be sent to the instructor, an important piece of information is the proposer. When a suggestion is made by a student, they can choose to make the suggestion in anonymous mode. The function set_proposer within suggestions controller determines whether the user has checked anonymous suggestion and then assigns the user_id to the proposer. In case, the student has chosen to make an anonymous suggestion, the proposer variable is set as the string “Anonymous”.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_3.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
To send the email, a mail_instructor function was created. This function requires the suggestion title, proposer, and the email of the receiver. &lt;br /&gt;
# The proposer is set using the set_proposer function.&lt;br /&gt;
# The suggestion title is passed through @suggestion.&lt;br /&gt;
# The assignment to which this suggestion is being made references to the instructor who created the assignment through instructor_id.&lt;br /&gt;
This function then calls new_suggested_topic function in the mailer.rb file to send the mail with the information.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_4.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The mailer.rb file also gets a new function new_suggested_topic referenced above.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_5.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The last change made to suggestions controller is calling the mail_instructor method in the create suggestion method. If the assignment references an instructor, the mail method is called on any suggestion being saved. The ‘if’ condition here is put in for a test condition where an assignment is created through the factories and this assignment does not reference an instructor. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_6.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The final change is the addition of a new file which contains the content and formatting of the mail being sent to the instructor.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Option for instructor to create a participant which does not exist ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_1.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The precondition here is that there is no participant and the instructor can add a non-existent participant. Further, a flash message is added when instructor adds a new participant. Instructor is forwarded to the user creation page by the corresponding link.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_2.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
User should have the provision to review projects. For that, the user needs to access the review page. A link has been added just for this purpose. The link would take the user to the respective review page.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_3.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Link for submission deadline reminder&lt;br /&gt;
User should get a deadline reminder in e-mail once a deadline to review is nearing. Once a user gets a deadline reminder e-mail, the user could review a team then. Email should have the link to review a team.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Modifications made to the email that the instructor receives for contradicting reviews ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
More functionalities added to the e-mail that the instructor receives for contradicting reviews. The average scores of the total reviews done previously and the score of the new review are included in this. It looks so much better with the bullet points included, thus increasing the readability.&lt;br /&gt;
[[File:Karan_4.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_5.jpg]]&amp;lt;br/&amp;gt;&lt;br /&gt;
response.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_6.jpg]] &amp;lt;br/&amp;gt;&lt;br /&gt;
notify_grade_conflict_message.html.erb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== E-mail to the invitee to join a team ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Participants would require other participants to team up for a project. In such a case, a participant would invite another participant to join a team. Subsequently, an e-mail should be received to join the team. The e-mail should have the join request with it to join the group. It is important that the e-mail is received by the receiver when a participant student invites him.&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_7.jpg]]&lt;br /&gt;
invitations_controller.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_8.jpg]] &lt;br /&gt;
mailer_helper.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ad responses and invitations reported by e-mail ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
When a student responds to a teammate advertisement, the person who created the advertisement must be notified by email. Three new files have been created to send e-mails to both the inviter and the invitee, the three files being accept, decline and pending. These three would be the responses of the invitations to join the team.&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_9.jpg]] &lt;br /&gt;
_invitation_accepted_html.html.erb&lt;br /&gt;
_invitation_declined_html.html.erb&lt;br /&gt;
_invitation_pending_html.html.erb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Option for the instructor to get a copy of emails being sent to the student ====&lt;br /&gt;
Any activity done on the assignment by a student can be viewed by the instructor. The instructor can make suggestions to the students. An e-mail could be sent by the instructor to the students regarding the activities done on the assignment. Now, the instructor has the option to choose to get all the e-mails that have been sent to the participants (students).&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_10.jpg]] &lt;br /&gt;
profile_controller.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_11.jpg]] &lt;br /&gt;
users_controller.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_12.jpg]] &lt;br /&gt;
delayed_mailer.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_13.jpg]] &lt;br /&gt;
mailer.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_14.jpg]] &lt;br /&gt;
user.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_15.jpg]] &lt;br /&gt;
_pref.html.erb.rb&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1831_OSS_Project_Teal_Email_Notifications_Enhancements&amp;diff=118237</id>
		<title>E1831 OSS Project Teal Email Notifications Enhancements</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1831_OSS_Project_Teal_Email_Notifications_Enhancements&amp;diff=118237"/>
		<updated>2018-11-02T21:55:14Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E1831 OSS assignment for Fall 2018, CSC 517.&lt;br /&gt;
&lt;br /&gt;
== About Expertiza ==&lt;br /&gt;
[https://expertiza.ncsu.edu/ Expertiza] is an open source project based on [https://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
== What has been done previously ==&lt;br /&gt;
Students and instructors are notified of various events by e-mail, e.g., creation of a new account, submission of a review on their work, or updating of work that they have reviewed. This project is focused on adding new email functionalities.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
* Issue [https://github.com/expertiza/expertiza/issues/296 #296]: Send out an email to the invitee when a participant sends out an invitation to another participant to join a team. The student who issued the invitation should also be e-mailed when the invitee joins the team. And also, when a student responds to a teammate advertisement, the person who created the advertisement must be notified by email. In general, all activity on ad responses and invitations should be reported to the other party by email (unless these emails are turned off in a (new) profile field).&lt;br /&gt;
* Notify an instructor by e-mail when a student suggests a topic.&lt;br /&gt;
* Issue [https://github.com/expertiza/expertiza/issues/87 #87]: Create an option (in the instructor’s profile) to get a copy of emails being sent to students.&lt;br /&gt;
&lt;br /&gt;
== Files modified under in this project ==&lt;br /&gt;
==== Controllers ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-f186adbcad8c7d0322f09c6448128d3d profile_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4e05ad0d64e6100656b63ad1e78f32c5 users_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-3f9708b6695fc195f497d7279229ce58 suggestions_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4d4587f69e7597b0876f8bd8620e4b3a invitations_controller.rb]&lt;br /&gt;
==== Views ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-618b778ac502cdb33996e09307ea10f5 _invitation_accepted_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4cf05cb698ae8bf7d018d98d32ac91ef _invitation_declined_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-b469a046eb2ce24c8bcebe67e6213ce9 _invitation_pending_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-95a9a005ee228f1bdfa926dd7d2e6ed6 new_suggested_topic.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-a847769ab4f73b3b644c52acd4aa6430 notify_grade_conflict_message.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-589c871157f8b5486be75d6846db3861 _new_submission_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-806051e10c2e890dccd7687300dfddf9 _submission_deadline_test_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-7ce11a3f8a2df2ad7295382fdd8f7909 _additional_links.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-7725211746ade7c4353148f9f91c9170 add.js.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-799a00b67bb0213bee389b71adaf4c7c _prefs.html.erb]&lt;br /&gt;
==== Mailers ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-6338cac8af5d0dac3dd6cf3183d97ce1 mailer_helper.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-9d59b3dd49f673876917117e94433d4e delayed_mailer.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-5354a099931d64748967998ea42d1fc1 mailer.rb]&lt;br /&gt;
==== Models ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-f2caf2e29f94ec94cb27bdb86ec85d40 response.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4676c008b11a5480d73d4a6de01e45b9 user.rb]&lt;br /&gt;
==== Database Migrations ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-9c48d33153eb16cc236ebf7318e77121 _add_copy_of_all_emails_flag_to_user.rb]&lt;br /&gt;
==== Specs ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-3a17ddf9d828caa60f11423f20fb88a9 factories.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-da946a02c81d553b070e087bcfb8051b login_helper.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4d891af414d69728e3576d12df5cfe45 due_date_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-0681f27c5662f797060be86cd862dd1f participant_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-12b107c16792b9ecba685e51b51826f1 user_spec.rb]&lt;br /&gt;
&lt;br /&gt;
== Solutions Implemented ==&lt;br /&gt;
&lt;br /&gt;
==== Sending mail to Instructor on creation of a new suggestion ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_2.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
As part of the email that is to be sent to the instructor, an important piece of information is the proposer. When a suggestion is made by a student, they can choose to make the suggestion in anonymous mode. The function set_proposer within suggestions controller determines whether the user has checked anonymous suggestion and then assigns the user_id to the proposer. In case, the student has chosen to make an anonymous suggestion, the proposer variable is set as the string “Anonymous”.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_3.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
To send the email, a mail_instructor function was created. This function requires the suggestion title, proposer, and the email of the receiver. &lt;br /&gt;
# The proposer is set using the set_proposer function.&lt;br /&gt;
# The suggestion title is passed through @suggestion.&lt;br /&gt;
# The assignment to which this suggestion is being made references to the instructor who created the assignment through instructor_id.&lt;br /&gt;
This function then calls new_suggested_topic function in the mailer.rb file to send the mail with the information.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_4.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The mailer.rb file also gets a new function new_suggested_topic referenced above.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_5.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The last change made to suggestions controller is calling the mail_instructor method in the create suggestion method. If the assignment references an instructor, the mail method is called on any suggestion being saved. The ‘if’ condition here is put in for a test condition where an assignment is created through the factories and this assignment does not reference an instructor. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_6.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The final change is the addition of a new file which contains the content and formatting of the mail being sent to the instructor.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Option for instructor to create a participant which does not exist ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_1.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The precondition here is that there is no participant and the instructor can add a non-existent participant. Further, a flash message is added when instructor adds a new participant. Instructor is forwarded to the user creation page by the corresponding link.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_2.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
User should have the provision to review projects. For that, the user needs to access the review page. A link has been added just for this purpose. The link would take the user to the respective review page.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_3.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Link for submission deadline reminder&lt;br /&gt;
User should get a deadline reminder in e-mail once a deadline to review is nearing. Once a user gets a deadline reminder e-mail, the user could review a team then. Email should have the link to review a team.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Modifications made to the email that the instructor receives for contradicting reviews ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
More functionalities added to the e-mail that the instructor receives for contradicting reviews. The average scores of the total reviews done previously and the score of the new review are included in this. It looks so much better with the bullet points included, thus increasing the readability.&lt;br /&gt;
[[File:Karan_4.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_5.jpg]] &lt;br /&gt;
response.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_6.jpg]] &lt;br /&gt;
notify_grade_conflict_message.html.erb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== E-mail to the invitee to join a team ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Participants would require other participants to team up for a project. In such a case, a participant would invite another participant to join a team. Subsequently, an e-mail should be received to join the team. The e-mail should have the join request with it to join the group. It is important that the e-mail is received by the receiver when a participant student invites him.&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_7.jpg]]&lt;br /&gt;
invitations_controller.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_8.jpg]] &lt;br /&gt;
mailer_helper.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ad responses and invitations reported by e-mail ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
When a student responds to a teammate advertisement, the person who created the advertisement must be notified by email. Three new files have been created to send e-mails to both the inviter and the invitee, the three files being accept, decline and pending. These three would be the responses of the invitations to join the team.&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_9.jpg]] &lt;br /&gt;
_invitation_accepted_html.html.erb&lt;br /&gt;
_invitation_declined_html.html.erb&lt;br /&gt;
_invitation_pending_html.html.erb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Option for the instructor to get a copy of emails being sent to the student ====&lt;br /&gt;
Any activity done on the assignment by a student can be viewed by the instructor. The instructor can make suggestions to the students. An e-mail could be sent by the instructor to the students regarding the activities done on the assignment. Now, the instructor has the option to choose to get all the e-mails that have been sent to the participants (students).&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_10.jpg]] &lt;br /&gt;
profile_controller.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_11.jpg]] &lt;br /&gt;
users_controller.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_12.jpg]] &lt;br /&gt;
delayed_mailer.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_13.jpg]] &lt;br /&gt;
mailer.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_14.jpg]] &lt;br /&gt;
user.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_15.jpg]] &lt;br /&gt;
_pref.html.erb.rb&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Karan_15.jpg&amp;diff=118228</id>
		<title>File:Karan 15.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Karan_15.jpg&amp;diff=118228"/>
		<updated>2018-11-02T21:49:25Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Karan_14.jpg&amp;diff=118227</id>
		<title>File:Karan 14.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Karan_14.jpg&amp;diff=118227"/>
		<updated>2018-11-02T21:49:18Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Karan_13.jpg&amp;diff=118226</id>
		<title>File:Karan 13.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Karan_13.jpg&amp;diff=118226"/>
		<updated>2018-11-02T21:49:11Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Karan_12.jpg&amp;diff=118225</id>
		<title>File:Karan 12.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Karan_12.jpg&amp;diff=118225"/>
		<updated>2018-11-02T21:49:03Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Karan_11.jpg&amp;diff=118223</id>
		<title>File:Karan 11.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Karan_11.jpg&amp;diff=118223"/>
		<updated>2018-11-02T21:48:54Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Karan_10.jpg&amp;diff=118216</id>
		<title>File:Karan 10.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Karan_10.jpg&amp;diff=118216"/>
		<updated>2018-11-02T21:42:43Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Karan_9.jpg&amp;diff=118214</id>
		<title>File:Karan 9.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Karan_9.jpg&amp;diff=118214"/>
		<updated>2018-11-02T21:42:33Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1831_OSS_Project_Teal_Email_Notifications_Enhancements&amp;diff=118200</id>
		<title>E1831 OSS Project Teal Email Notifications Enhancements</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1831_OSS_Project_Teal_Email_Notifications_Enhancements&amp;diff=118200"/>
		<updated>2018-11-02T21:30:07Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E1831 OSS assignment for Fall 2018, CSC 517.&lt;br /&gt;
&lt;br /&gt;
== About Expertiza ==&lt;br /&gt;
[https://expertiza.ncsu.edu/ Expertiza] is an open source project based on [https://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
== What has been done previously ==&lt;br /&gt;
Students and instructors are notified of various events by e-mail, e.g., creation of a new account, submission of a review on their work, or updating of work that they have reviewed. This project is focused on adding new email functionalities.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
* Issue [https://github.com/expertiza/expertiza/issues/296 #296]: Send out an email to the invitee when a participant sends out an invitation to another participant to join a team. The student who issued the invitation should also be e-mailed when the invitee joins the team. And also, when a student responds to a teammate advertisement, the person who created the advertisement must be notified by email. In general, all activity on ad responses and invitations should be reported to the other party by email (unless these emails are turned off in a (new) profile field).&lt;br /&gt;
* Notify an instructor by e-mail when a student suggests a topic.&lt;br /&gt;
* Issue [https://github.com/expertiza/expertiza/issues/87 #87]: Create an option (in the instructor’s profile) to get a copy of emails being sent to students.&lt;br /&gt;
&lt;br /&gt;
== Files modified under in this project ==&lt;br /&gt;
==== Controllers ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-f186adbcad8c7d0322f09c6448128d3d profile_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4e05ad0d64e6100656b63ad1e78f32c5 users_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-3f9708b6695fc195f497d7279229ce58 suggestions_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4d4587f69e7597b0876f8bd8620e4b3a invitations_controller.rb]&lt;br /&gt;
==== Views ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-618b778ac502cdb33996e09307ea10f5 _invitation_accepted_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4cf05cb698ae8bf7d018d98d32ac91ef _invitation_declined_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-b469a046eb2ce24c8bcebe67e6213ce9 _invitation_pending_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-95a9a005ee228f1bdfa926dd7d2e6ed6 new_suggested_topic.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-a847769ab4f73b3b644c52acd4aa6430 notify_grade_conflict_message.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-589c871157f8b5486be75d6846db3861 _new_submission_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-806051e10c2e890dccd7687300dfddf9 _submission_deadline_test_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-7ce11a3f8a2df2ad7295382fdd8f7909 _additional_links.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-7725211746ade7c4353148f9f91c9170 add.js.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-799a00b67bb0213bee389b71adaf4c7c _prefs.html.erb]&lt;br /&gt;
==== Mailers ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-6338cac8af5d0dac3dd6cf3183d97ce1 mailer_helper.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-9d59b3dd49f673876917117e94433d4e delayed_mailer.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-5354a099931d64748967998ea42d1fc1 mailer.rb]&lt;br /&gt;
==== Models ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-f2caf2e29f94ec94cb27bdb86ec85d40 response.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4676c008b11a5480d73d4a6de01e45b9 user.rb]&lt;br /&gt;
==== Database Migrations ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-9c48d33153eb16cc236ebf7318e77121 _add_copy_of_all_emails_flag_to_user.rb]&lt;br /&gt;
==== Specs ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-3a17ddf9d828caa60f11423f20fb88a9 factories.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-da946a02c81d553b070e087bcfb8051b login_helper.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4d891af414d69728e3576d12df5cfe45 due_date_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-0681f27c5662f797060be86cd862dd1f participant_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-12b107c16792b9ecba685e51b51826f1 user_spec.rb]&lt;br /&gt;
&lt;br /&gt;
== Solutions Implemented ==&lt;br /&gt;
&lt;br /&gt;
==== Sending mail to Instructor on creation of a new suggestion ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_2.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
As part of the email that is to be sent to the instructor, an important piece of information is the proposer. When a suggestion is made by a student, they can choose to make the suggestion in anonymous mode. The function set_proposer within suggestions controller determines whether the user has checked anonymous suggestion and then assigns the user_id to the proposer. In case, the student has chosen to make an anonymous suggestion, the proposer variable is set as the string “Anonymous”.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_3.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
To send the email, a mail_instructor function was created. This function requires the suggestion title, proposer, and the email of the receiver. &lt;br /&gt;
# The proposer is set using the set_proposer function.&lt;br /&gt;
# The suggestion title is passed through @suggestion.&lt;br /&gt;
# The assignment to which this suggestion is being made references to the instructor who created the assignment through instructor_id.&lt;br /&gt;
This function then calls new_suggested_topic function in the mailer.rb file to send the mail with the information.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_4.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The mailer.rb file also gets a new function new_suggested_topic referenced above.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_5.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The last change made to suggestions controller is calling the mail_instructor method in the create suggestion method. If the assignment references an instructor, the mail method is called on any suggestion being saved. The ‘if’ condition here is put in for a test condition where an assignment is created through the factories and this assignment does not reference an instructor. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_6.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The final change is the addition of a new file which contains the content and formatting of the mail being sent to the instructor.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Option for instructor to create a participant which does not exist ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_1.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The precondition here is that there is no participant and the instructor can add a non-existent participant. Further, a flash message is added when instructor adds a new participant. Instructor is forwarded to the user creation page by the corresponding link.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_2.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
User should have the provision to review projects. For that, the user needs to access the review page. A link has been added just for this purpose. The link would take the user to the respective review page.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_3.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Link for submission deadline reminder&lt;br /&gt;
User should get a deadline reminder in e-mail once a deadline to review is nearing. Once a user gets a deadline reminder e-mail, the user could review a team then. Email should have the link to review a team.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Modifications made to the email that the instructor receives for contradicting reviews ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
More functionalities added to the e-mail that the instructor receives for contradicting reviews. The average scores of the total reviews done previously and the score of the new review are included in this. It looks so much better with the bullet points included, thus increasing the readability.&lt;br /&gt;
[[File:Karan_4.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_5.jpg]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_6.jpg]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== E-mail to the invitee to join a team ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Participants would require other participants to team up for a project. In such a case, a participant would invite another participant to join a team. Subsequently, an e-mail should be received to join the team. The e-mail should have the join request with it to join the group. It is important that the e-mail is received by the receiver when a participant student invites him.&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1831_OSS_Project_Teal_Email_Notifications_Enhancements&amp;diff=118199</id>
		<title>E1831 OSS Project Teal Email Notifications Enhancements</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1831_OSS_Project_Teal_Email_Notifications_Enhancements&amp;diff=118199"/>
		<updated>2018-11-02T21:29:49Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E1831 OSS assignment for Fall 2018, CSC 517.&lt;br /&gt;
&lt;br /&gt;
== About Expertiza ==&lt;br /&gt;
[https://expertiza.ncsu.edu/ Expertiza] is an open source project based on [https://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
== What has been done previously ==&lt;br /&gt;
Students and instructors are notified of various events by e-mail, e.g., creation of a new account, submission of a review on their work, or updating of work that they have reviewed. This project is focused on adding new email functionalities.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
* Issue [https://github.com/expertiza/expertiza/issues/296 #296]: Send out an email to the invitee when a participant sends out an invitation to another participant to join a team. The student who issued the invitation should also be e-mailed when the invitee joins the team. And also, when a student responds to a teammate advertisement, the person who created the advertisement must be notified by email. In general, all activity on ad responses and invitations should be reported to the other party by email (unless these emails are turned off in a (new) profile field).&lt;br /&gt;
* Notify an instructor by e-mail when a student suggests a topic.&lt;br /&gt;
* Issue [https://github.com/expertiza/expertiza/issues/87 #87]: Create an option (in the instructor’s profile) to get a copy of emails being sent to students.&lt;br /&gt;
&lt;br /&gt;
== Files modified under in this project ==&lt;br /&gt;
==== Controllers ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-f186adbcad8c7d0322f09c6448128d3d profile_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4e05ad0d64e6100656b63ad1e78f32c5 users_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-3f9708b6695fc195f497d7279229ce58 suggestions_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4d4587f69e7597b0876f8bd8620e4b3a invitations_controller.rb]&lt;br /&gt;
==== Views ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-618b778ac502cdb33996e09307ea10f5 _invitation_accepted_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4cf05cb698ae8bf7d018d98d32ac91ef _invitation_declined_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-b469a046eb2ce24c8bcebe67e6213ce9 _invitation_pending_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-95a9a005ee228f1bdfa926dd7d2e6ed6 new_suggested_topic.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-a847769ab4f73b3b644c52acd4aa6430 notify_grade_conflict_message.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-589c871157f8b5486be75d6846db3861 _new_submission_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-806051e10c2e890dccd7687300dfddf9 _submission_deadline_test_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-7ce11a3f8a2df2ad7295382fdd8f7909 _additional_links.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-7725211746ade7c4353148f9f91c9170 add.js.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-799a00b67bb0213bee389b71adaf4c7c _prefs.html.erb]&lt;br /&gt;
==== Mailers ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-6338cac8af5d0dac3dd6cf3183d97ce1 mailer_helper.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-9d59b3dd49f673876917117e94433d4e delayed_mailer.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-5354a099931d64748967998ea42d1fc1 mailer.rb]&lt;br /&gt;
==== Models ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-f2caf2e29f94ec94cb27bdb86ec85d40 response.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4676c008b11a5480d73d4a6de01e45b9 user.rb]&lt;br /&gt;
==== Database Migrations ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-9c48d33153eb16cc236ebf7318e77121 _add_copy_of_all_emails_flag_to_user.rb]&lt;br /&gt;
==== Specs ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-3a17ddf9d828caa60f11423f20fb88a9 factories.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-da946a02c81d553b070e087bcfb8051b login_helper.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4d891af414d69728e3576d12df5cfe45 due_date_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-0681f27c5662f797060be86cd862dd1f participant_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-12b107c16792b9ecba685e51b51826f1 user_spec.rb]&lt;br /&gt;
&lt;br /&gt;
== Solutions Implemented ==&lt;br /&gt;
&lt;br /&gt;
==== Sending mail to Instructor on creation of a new suggestion ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_2.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
As part of the email that is to be sent to the instructor, an important piece of information is the proposer. When a suggestion is made by a student, they can choose to make the suggestion in anonymous mode. The function set_proposer within suggestions controller determines whether the user has checked anonymous suggestion and then assigns the user_id to the proposer. In case, the student has chosen to make an anonymous suggestion, the proposer variable is set as the string “Anonymous”.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_3.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
To send the email, a mail_instructor function was created. This function requires the suggestion title, proposer, and the email of the receiver. &lt;br /&gt;
# The proposer is set using the set_proposer function.&lt;br /&gt;
# The suggestion title is passed through @suggestion.&lt;br /&gt;
# The assignment to which this suggestion is being made references to the instructor who created the assignment through instructor_id.&lt;br /&gt;
This function then calls new_suggested_topic function in the mailer.rb file to send the mail with the information.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_4.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The mailer.rb file also gets a new function new_suggested_topic referenced above.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_5.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The last change made to suggestions controller is calling the mail_instructor method in the create suggestion method. If the assignment references an instructor, the mail method is called on any suggestion being saved. The ‘if’ condition here is put in for a test condition where an assignment is created through the factories and this assignment does not reference an instructor. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_6.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The final change is the addition of a new file which contains the content and formatting of the mail being sent to the instructor.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Option for instructor to create a participant which does not exist ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_1.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The precondition here is that there is no participant and the instructor can add a non-existent participant. Further, a flash message is added when instructor adds a new participant. Instructor is forwarded to the user creation page by the corresponding link.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_2.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
User should have the provision to review projects. For that, the user needs to access the review page. A link has been added just for this purpose. The link would take the user to the respective review page.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_3.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Link for submission deadline reminder&lt;br /&gt;
User should get a deadline reminder in e-mail once a deadline to review is nearing. Once a user gets a deadline reminder e-mail, the user could review a team then. Email should have the link to review a team.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Modifications made to the email that the instructor receives for contradicting reviews ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
More functionalities added to the e-mail that the instructor receives for contradicting reviews. The average scores of the total reviews done previously and the score of the new review are included in this. It looks so much better with the bullet points included, thus increasing the readability.&lt;br /&gt;
[[File:Karan_4.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_5.jpg]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_6.jpg]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== E-mail to the invitee to join a team ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Participants would require other participants to team up for a project. In such a case, a participant would invite another participant to join a team. Subsequently, an e-mail should be received to join the team. The e-mail should have the join request with it to join the group. It is important that the e-mail is received by the receiver when a participant student invites him.&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1831_OSS_Project_Teal_Email_Notifications_Enhancements&amp;diff=118195</id>
		<title>E1831 OSS Project Teal Email Notifications Enhancements</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1831_OSS_Project_Teal_Email_Notifications_Enhancements&amp;diff=118195"/>
		<updated>2018-11-02T21:27:12Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E1831 OSS assignment for Fall 2018, CSC 517.&lt;br /&gt;
&lt;br /&gt;
== About Expertiza ==&lt;br /&gt;
[https://expertiza.ncsu.edu/ Expertiza] is an open source project based on [https://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
== What has been done previously ==&lt;br /&gt;
Students and instructors are notified of various events by e-mail, e.g., creation of a new account, submission of a review on their work, or updating of work that they have reviewed. This project is focused on adding new email functionalities.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
* Issue [https://github.com/expertiza/expertiza/issues/296 #296]: Send out an email to the invitee when a participant sends out an invitation to another participant to join a team. The student who issued the invitation should also be e-mailed when the invitee joins the team. And also, when a student responds to a teammate advertisement, the person who created the advertisement must be notified by email. In general, all activity on ad responses and invitations should be reported to the other party by email (unless these emails are turned off in a (new) profile field).&lt;br /&gt;
* Notify an instructor by e-mail when a student suggests a topic.&lt;br /&gt;
* Issue [https://github.com/expertiza/expertiza/issues/87 #87]: Create an option (in the instructor’s profile) to get a copy of emails being sent to students.&lt;br /&gt;
&lt;br /&gt;
== Files modified under in this project ==&lt;br /&gt;
==== Controllers ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-f186adbcad8c7d0322f09c6448128d3d profile_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4e05ad0d64e6100656b63ad1e78f32c5 users_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-3f9708b6695fc195f497d7279229ce58 suggestions_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4d4587f69e7597b0876f8bd8620e4b3a invitations_controller.rb]&lt;br /&gt;
==== Views ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-618b778ac502cdb33996e09307ea10f5 _invitation_accepted_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4cf05cb698ae8bf7d018d98d32ac91ef _invitation_declined_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-b469a046eb2ce24c8bcebe67e6213ce9 _invitation_pending_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-95a9a005ee228f1bdfa926dd7d2e6ed6 new_suggested_topic.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-a847769ab4f73b3b644c52acd4aa6430 notify_grade_conflict_message.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-589c871157f8b5486be75d6846db3861 _new_submission_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-806051e10c2e890dccd7687300dfddf9 _submission_deadline_test_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-7ce11a3f8a2df2ad7295382fdd8f7909 _additional_links.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-7725211746ade7c4353148f9f91c9170 add.js.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-799a00b67bb0213bee389b71adaf4c7c _prefs.html.erb]&lt;br /&gt;
==== Mailers ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-6338cac8af5d0dac3dd6cf3183d97ce1 mailer_helper.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-9d59b3dd49f673876917117e94433d4e delayed_mailer.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-5354a099931d64748967998ea42d1fc1 mailer.rb]&lt;br /&gt;
==== Models ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-f2caf2e29f94ec94cb27bdb86ec85d40 response.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4676c008b11a5480d73d4a6de01e45b9 user.rb]&lt;br /&gt;
==== Database Migrations ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-9c48d33153eb16cc236ebf7318e77121 _add_copy_of_all_emails_flag_to_user.rb]&lt;br /&gt;
==== Specs ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-3a17ddf9d828caa60f11423f20fb88a9 factories.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-da946a02c81d553b070e087bcfb8051b login_helper.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4d891af414d69728e3576d12df5cfe45 due_date_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-0681f27c5662f797060be86cd862dd1f participant_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-12b107c16792b9ecba685e51b51826f1 user_spec.rb]&lt;br /&gt;
&lt;br /&gt;
== Solutions Implemented ==&lt;br /&gt;
&lt;br /&gt;
==== Sending mail to Instructor on creation of a new suggestion ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_2.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
As part of the email that is to be sent to the instructor, an important piece of information is the proposer. When a suggestion is made by a student, they can choose to make the suggestion in anonymous mode. The function set_proposer within suggestions controller determines whether the user has checked anonymous suggestion and then assigns the user_id to the proposer. In case, the student has chosen to make an anonymous suggestion, the proposer variable is set as the string “Anonymous”.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_3.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
To send the email, a mail_instructor function was created. This function requires the suggestion title, proposer, and the email of the receiver. &lt;br /&gt;
# The proposer is set using the set_proposer function.&lt;br /&gt;
# The suggestion title is passed through @suggestion.&lt;br /&gt;
# The assignment to which this suggestion is being made references to the instructor who created the assignment through instructor_id.&lt;br /&gt;
This function then calls new_suggested_topic function in the mailer.rb file to send the mail with the information.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_4.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The mailer.rb file also gets a new function new_suggested_topic referenced above.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_5.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The last change made to suggestions controller is calling the mail_instructor method in the create suggestion method. If the assignment references an instructor, the mail method is called on any suggestion being saved. The ‘if’ condition here is put in for a test condition where an assignment is created through the factories and this assignment does not reference an instructor. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_6.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The final change is the addition of a new file which contains the content and formatting of the mail being sent to the instructor.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Option for instructor to create a participant which does not exist ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_1.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The precondition here is that there is no participant and the instructor can add a non-existent participant. Further, a flash message is added when instructor adds a new participant. Instructor is forwarded to the user creation page by the corresponding link.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_2.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
User should have the provision to review projects. For that, the user needs to access the review page. A link has been added just for this purpose. The link would take the user to the respective review page.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_3.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Link for submission deadline reminder&lt;br /&gt;
User should get a deadline reminder in e-mail once a deadline to review is nearing. Once a user gets a deadline reminder e-mail, the user could review a team then. Email should have the link to review a team.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Modifications made to the email that the instructor receives for contradicting reviews ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
More functionalities added to the e-mail that the instructor receives for contradicting reviews. The average scores of the total reviews done previously and the score of the new review are included in this. It looks so much better with the bullet points included, thus increasing the readability.&lt;br /&gt;
[[File:Karan_4.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_5.jpg]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_6.jpg]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== E-mail to the invitee to join a team ====&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1831_OSS_Project_Teal_Email_Notifications_Enhancements&amp;diff=118194</id>
		<title>E1831 OSS Project Teal Email Notifications Enhancements</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1831_OSS_Project_Teal_Email_Notifications_Enhancements&amp;diff=118194"/>
		<updated>2018-11-02T21:26:00Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E1831 OSS assignment for Fall 2018, CSC 517.&lt;br /&gt;
&lt;br /&gt;
== About Expertiza ==&lt;br /&gt;
[https://expertiza.ncsu.edu/ Expertiza] is an open source project based on [https://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
== What has been done previously ==&lt;br /&gt;
Students and instructors are notified of various events by e-mail, e.g., creation of a new account, submission of a review on their work, or updating of work that they have reviewed. This project is focused on adding new email functionalities.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
* Issue [https://github.com/expertiza/expertiza/issues/296 #296]: Send out an email to the invitee when a participant sends out an invitation to another participant to join a team. The student who issued the invitation should also be e-mailed when the invitee joins the team. And also, when a student responds to a teammate advertisement, the person who created the advertisement must be notified by email. In general, all activity on ad responses and invitations should be reported to the other party by email (unless these emails are turned off in a (new) profile field).&lt;br /&gt;
* Notify an instructor by e-mail when a student suggests a topic.&lt;br /&gt;
* Issue [https://github.com/expertiza/expertiza/issues/87 #87]: Create an option (in the instructor’s profile) to get a copy of emails being sent to students.&lt;br /&gt;
&lt;br /&gt;
== Files modified under in this project ==&lt;br /&gt;
==== Controllers ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-f186adbcad8c7d0322f09c6448128d3d profile_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4e05ad0d64e6100656b63ad1e78f32c5 users_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-3f9708b6695fc195f497d7279229ce58 suggestions_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4d4587f69e7597b0876f8bd8620e4b3a invitations_controller.rb]&lt;br /&gt;
==== Views ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-618b778ac502cdb33996e09307ea10f5 _invitation_accepted_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4cf05cb698ae8bf7d018d98d32ac91ef _invitation_declined_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-b469a046eb2ce24c8bcebe67e6213ce9 _invitation_pending_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-95a9a005ee228f1bdfa926dd7d2e6ed6 new_suggested_topic.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-a847769ab4f73b3b644c52acd4aa6430 notify_grade_conflict_message.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-589c871157f8b5486be75d6846db3861 _new_submission_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-806051e10c2e890dccd7687300dfddf9 _submission_deadline_test_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-7ce11a3f8a2df2ad7295382fdd8f7909 _additional_links.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-7725211746ade7c4353148f9f91c9170 add.js.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-799a00b67bb0213bee389b71adaf4c7c _prefs.html.erb]&lt;br /&gt;
==== Mailers ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-6338cac8af5d0dac3dd6cf3183d97ce1 mailer_helper.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-9d59b3dd49f673876917117e94433d4e delayed_mailer.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-5354a099931d64748967998ea42d1fc1 mailer.rb]&lt;br /&gt;
==== Models ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-f2caf2e29f94ec94cb27bdb86ec85d40 response.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4676c008b11a5480d73d4a6de01e45b9 user.rb]&lt;br /&gt;
==== Database Migrations ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-9c48d33153eb16cc236ebf7318e77121 _add_copy_of_all_emails_flag_to_user.rb]&lt;br /&gt;
==== Specs ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-3a17ddf9d828caa60f11423f20fb88a9 factories.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-da946a02c81d553b070e087bcfb8051b login_helper.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4d891af414d69728e3576d12df5cfe45 due_date_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-0681f27c5662f797060be86cd862dd1f participant_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-12b107c16792b9ecba685e51b51826f1 user_spec.rb]&lt;br /&gt;
&lt;br /&gt;
== Solutions Implemented ==&lt;br /&gt;
&lt;br /&gt;
==== Sending mail to Instructor on creation of a new suggestion ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_2.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
As part of the email that is to be sent to the instructor, an important piece of information is the proposer. When a suggestion is made by a student, they can choose to make the suggestion in anonymous mode. The function set_proposer within suggestions controller determines whether the user has checked anonymous suggestion and then assigns the user_id to the proposer. In case, the student has chosen to make an anonymous suggestion, the proposer variable is set as the string “Anonymous”.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_3.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
To send the email, a mail_instructor function was created. This function requires the suggestion title, proposer, and the email of the receiver. &lt;br /&gt;
# The proposer is set using the set_proposer function.&lt;br /&gt;
# The suggestion title is passed through @suggestion.&lt;br /&gt;
# The assignment to which this suggestion is being made references to the instructor who created the assignment through instructor_id.&lt;br /&gt;
This function then calls new_suggested_topic function in the mailer.rb file to send the mail with the information.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_4.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The mailer.rb file also gets a new function new_suggested_topic referenced above.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_5.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The last change made to suggestions controller is calling the mail_instructor method in the create suggestion method. If the assignment references an instructor, the mail method is called on any suggestion being saved. The ‘if’ condition here is put in for a test condition where an assignment is created through the factories and this assignment does not reference an instructor. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_6.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The final change is the addition of a new file which contains the content and formatting of the mail being sent to the instructor.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Option for instructor to create a participant which does not exist ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_1.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The precondition here is that there is no participant and the instructor can add a non-existent participant. Further, a flash message is added when instructor adds a new participant. Instructor is forwarded to the user creation page by the corresponding link.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_2.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
User should have the provision to review projects. For that, the user needs to access the review page. A link has been added just for this purpose. The link would take the user to the respective review page.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_3.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Link for submission deadline reminder&lt;br /&gt;
User should get a deadline reminder in e-mail once a deadline to review is nearing. Once a user gets a deadline reminder e-mail, the user could review a team then. Email should have the link to review a team.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Modifications made to the email that the instructor receives for contradicting reviews ====&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
More functionalities added to the e-mail that the instructor receives for contradicting reviews. The average scores of the total reviews done previously and the score of the new review are included in this. It looks so much better with the bullet points included, thus increasing the readability.&lt;br /&gt;
[[File:Karan_4.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Karan_5.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Karan_6.jpg]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1831_OSS_Project_Teal_Email_Notifications_Enhancements&amp;diff=118191</id>
		<title>E1831 OSS Project Teal Email Notifications Enhancements</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1831_OSS_Project_Teal_Email_Notifications_Enhancements&amp;diff=118191"/>
		<updated>2018-11-02T21:23:07Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E1831 OSS assignment for Fall 2018, CSC 517.&lt;br /&gt;
&lt;br /&gt;
== About Expertiza ==&lt;br /&gt;
[https://expertiza.ncsu.edu/ Expertiza] is an open source project based on [https://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
== What has been done previously ==&lt;br /&gt;
Students and instructors are notified of various events by e-mail, e.g., creation of a new account, submission of a review on their work, or updating of work that they have reviewed. This project is focused on adding new email functionalities.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
* Issue [https://github.com/expertiza/expertiza/issues/296 #296]: Send out an email to the invitee when a participant sends out an invitation to another participant to join a team. The student who issued the invitation should also be e-mailed when the invitee joins the team. And also, when a student responds to a teammate advertisement, the person who created the advertisement must be notified by email. In general, all activity on ad responses and invitations should be reported to the other party by email (unless these emails are turned off in a (new) profile field).&lt;br /&gt;
* Notify an instructor by e-mail when a student suggests a topic.&lt;br /&gt;
* Issue [https://github.com/expertiza/expertiza/issues/87 #87]: Create an option (in the instructor’s profile) to get a copy of emails being sent to students.&lt;br /&gt;
&lt;br /&gt;
== Files modified under in this project ==&lt;br /&gt;
==== Controllers ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-f186adbcad8c7d0322f09c6448128d3d profile_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4e05ad0d64e6100656b63ad1e78f32c5 users_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-3f9708b6695fc195f497d7279229ce58 suggestions_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4d4587f69e7597b0876f8bd8620e4b3a invitations_controller.rb]&lt;br /&gt;
==== Views ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-618b778ac502cdb33996e09307ea10f5 _invitation_accepted_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4cf05cb698ae8bf7d018d98d32ac91ef _invitation_declined_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-b469a046eb2ce24c8bcebe67e6213ce9 _invitation_pending_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-95a9a005ee228f1bdfa926dd7d2e6ed6 new_suggested_topic.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-a847769ab4f73b3b644c52acd4aa6430 notify_grade_conflict_message.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-589c871157f8b5486be75d6846db3861 _new_submission_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-806051e10c2e890dccd7687300dfddf9 _submission_deadline_test_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-7ce11a3f8a2df2ad7295382fdd8f7909 _additional_links.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-7725211746ade7c4353148f9f91c9170 add.js.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-799a00b67bb0213bee389b71adaf4c7c _prefs.html.erb]&lt;br /&gt;
==== Mailers ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-6338cac8af5d0dac3dd6cf3183d97ce1 mailer_helper.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-9d59b3dd49f673876917117e94433d4e delayed_mailer.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-5354a099931d64748967998ea42d1fc1 mailer.rb]&lt;br /&gt;
==== Models ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-f2caf2e29f94ec94cb27bdb86ec85d40 response.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4676c008b11a5480d73d4a6de01e45b9 user.rb]&lt;br /&gt;
==== Database Migrations ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-9c48d33153eb16cc236ebf7318e77121 _add_copy_of_all_emails_flag_to_user.rb]&lt;br /&gt;
==== Specs ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-3a17ddf9d828caa60f11423f20fb88a9 factories.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-da946a02c81d553b070e087bcfb8051b login_helper.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4d891af414d69728e3576d12df5cfe45 due_date_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-0681f27c5662f797060be86cd862dd1f participant_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-12b107c16792b9ecba685e51b51826f1 user_spec.rb]&lt;br /&gt;
&lt;br /&gt;
== Solutions Implemented ==&lt;br /&gt;
&lt;br /&gt;
==== Sending mail to Instructor on creation of a new suggestion ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_2.jpg]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
As part of the email that is to be sent to the instructor, an important piece of information is the proposer. When a suggestion is made by a student, they can choose to make the suggestion in anonymous mode. The function set_proposer within suggestions controller determines whether the user has checked anonymous suggestion and then assigns the user_id to the proposer. In case, the student has chosen to make an anonymous suggestion, the proposer variable is set as the string “Anonymous”.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_3.jpg]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
To send the email, a mail_instructor function was created. This function requires the suggestion title, proposer, and the email of the receiver. &lt;br /&gt;
# The proposer is set using the set_proposer function.&lt;br /&gt;
# The suggestion title is passed through @suggestion.&lt;br /&gt;
# The assignment to which this suggestion is being made references to the instructor who created the assignment through instructor_id.&lt;br /&gt;
This function then calls new_suggested_topic function in the mailer.rb file to send the mail with the information.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_4.jpg]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The mailer.rb file also gets a new function new_suggested_topic referenced above.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_5.jpg]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The last change made to suggestions controller is calling the mail_instructor method in the create suggestion method. If the assignment references an instructor, the mail method is called on any suggestion being saved. The ‘if’ condition here is put in for a test condition where an assignment is created through the factories and this assignment does not reference an instructor. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_6.jpg]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The final change is the addition of a new file which contains the content and formatting of the mail being sent to the instructor.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Option for instructor to create a participant which does not exist ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_1.jpg]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The precondition here is that there is no participant and the instructor can add a non-existent participant. Further, a flash message is added when instructor adds a new participant. Instructor is forwarded to the user creation page by the corresponding link.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_2.jpg]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
User should have the provision to review projects. For that, the user needs to access the review page. A link has been added just for this purpose. The link would take the user to the respective review page.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_3.jpg]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Link for submission deadline reminder&lt;br /&gt;
User should get a deadline reminder in e-mail once a deadline to review is nearing. Once a user gets a deadline reminder e-mail, the user could review a team then. Email should have the link to review a team.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Modifications made to the email that the instructor receives for contradicting reviews ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
More functionalities added to the e-mail that the instructor receives for contradicting reviews. The average scores of the total reviews done previously and the score of the new review are included in this. It looks so much better with the bullet points included, thus increasing the readability.&lt;br /&gt;
[[File:Karan_4.jpg]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Karan_5.jpg]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Karan_6.jpg]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Karan_6.jpg&amp;diff=118190</id>
		<title>File:Karan 6.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Karan_6.jpg&amp;diff=118190"/>
		<updated>2018-11-02T21:22:59Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Karan_5.jpg&amp;diff=118189</id>
		<title>File:Karan 5.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Karan_5.jpg&amp;diff=118189"/>
		<updated>2018-11-02T21:22:51Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Karan_4.jpg&amp;diff=118187</id>
		<title>File:Karan 4.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Karan_4.jpg&amp;diff=118187"/>
		<updated>2018-11-02T21:22:43Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Karan_3.jpg&amp;diff=118170</id>
		<title>File:Karan 3.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Karan_3.jpg&amp;diff=118170"/>
		<updated>2018-11-02T21:18:45Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Karan_2.jpg&amp;diff=118164</id>
		<title>File:Karan 2.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Karan_2.jpg&amp;diff=118164"/>
		<updated>2018-11-02T21:16:46Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1831_OSS_Project_Teal_Email_Notifications_Enhancements&amp;diff=118158</id>
		<title>E1831 OSS Project Teal Email Notifications Enhancements</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1831_OSS_Project_Teal_Email_Notifications_Enhancements&amp;diff=118158"/>
		<updated>2018-11-02T21:14:15Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E1831 OSS assignment for Fall 2018, CSC 517.&lt;br /&gt;
&lt;br /&gt;
== About Expertiza ==&lt;br /&gt;
[https://expertiza.ncsu.edu/ Expertiza] is an open source project based on [https://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
== What has been done previously ==&lt;br /&gt;
Students and instructors are notified of various events by e-mail, e.g., creation of a new account, submission of a review on their work, or updating of work that they have reviewed. This project is focused on adding new email functionalities.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
* Issue [https://github.com/expertiza/expertiza/issues/296 #296]: Send out an email to the invitee when a participant sends out an invitation to another participant to join a team. The student who issued the invitation should also be e-mailed when the invitee joins the team. And also, when a student responds to a teammate advertisement, the person who created the advertisement must be notified by email. In general, all activity on ad responses and invitations should be reported to the other party by email (unless these emails are turned off in a (new) profile field).&lt;br /&gt;
* Notify an instructor by e-mail when a student suggests a topic.&lt;br /&gt;
* Issue [https://github.com/expertiza/expertiza/issues/87 #87]: Create an option (in the instructor’s profile) to get a copy of emails being sent to students.&lt;br /&gt;
&lt;br /&gt;
== Files modified under in this project ==&lt;br /&gt;
==== Controllers ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-f186adbcad8c7d0322f09c6448128d3d profile_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4e05ad0d64e6100656b63ad1e78f32c5 users_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-3f9708b6695fc195f497d7279229ce58 suggestions_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4d4587f69e7597b0876f8bd8620e4b3a invitations_controller.rb]&lt;br /&gt;
==== Views ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-618b778ac502cdb33996e09307ea10f5 _invitation_accepted_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4cf05cb698ae8bf7d018d98d32ac91ef _invitation_declined_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-b469a046eb2ce24c8bcebe67e6213ce9 _invitation_pending_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-95a9a005ee228f1bdfa926dd7d2e6ed6 new_suggested_topic.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-a847769ab4f73b3b644c52acd4aa6430 notify_grade_conflict_message.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-589c871157f8b5486be75d6846db3861 _new_submission_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-806051e10c2e890dccd7687300dfddf9 _submission_deadline_test_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-7ce11a3f8a2df2ad7295382fdd8f7909 _additional_links.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-7725211746ade7c4353148f9f91c9170 add.js.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-799a00b67bb0213bee389b71adaf4c7c _prefs.html.erb]&lt;br /&gt;
==== Mailers ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-6338cac8af5d0dac3dd6cf3183d97ce1 mailer_helper.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-9d59b3dd49f673876917117e94433d4e delayed_mailer.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-5354a099931d64748967998ea42d1fc1 mailer.rb]&lt;br /&gt;
==== Models ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-f2caf2e29f94ec94cb27bdb86ec85d40 response.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4676c008b11a5480d73d4a6de01e45b9 user.rb]&lt;br /&gt;
==== Database Migrations ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-9c48d33153eb16cc236ebf7318e77121 _add_copy_of_all_emails_flag_to_user.rb]&lt;br /&gt;
==== Specs ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-3a17ddf9d828caa60f11423f20fb88a9 factories.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-da946a02c81d553b070e087bcfb8051b login_helper.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4d891af414d69728e3576d12df5cfe45 due_date_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-0681f27c5662f797060be86cd862dd1f participant_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-12b107c16792b9ecba685e51b51826f1 user_spec.rb]&lt;br /&gt;
&lt;br /&gt;
== Solutions Implemented ==&lt;br /&gt;
&lt;br /&gt;
==== Sending mail to Instructor on creation of a new suggestion ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_2.jpg]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
As part of the email that is to be sent to the instructor, an important piece of information is the proposer. When a suggestion is made by a student, they can choose to make the suggestion in anonymous mode. The function set_proposer within suggestions controller determines whether the user has checked anonymous suggestion and then assigns the user_id to the proposer. In case, the student has chosen to make an anonymous suggestion, the proposer variable is set as the string “Anonymous”.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_3.jpg]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
To send the email, a mail_instructor function was created. This function requires the suggestion title, proposer, and the email of the receiver. &lt;br /&gt;
# The proposer is set using the set_proposer function.&lt;br /&gt;
# The suggestion title is passed through @suggestion.&lt;br /&gt;
# The assignment to which this suggestion is being made references to the instructor who created the assignment through instructor_id.&lt;br /&gt;
This function then calls new_suggested_topic function in the mailer.rb file to send the mail with the information.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_4.jpg]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The mailer.rb file also gets a new function new_suggested_topic referenced above.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_5.jpg]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The last change made to suggestions controller is calling the mail_instructor method in the create suggestion method. If the assignment references an instructor, the mail method is called on any suggestion being saved. The ‘if’ condition here is put in for a test condition where an assignment is created through the factories and this assignment does not reference an instructor. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_6.jpg]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The final change is the addition of a new file which contains the content and formatting of the mail being sent to the instructor.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Option for instructor to create a participant which does not exist ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Karan_1.jpg]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The precondition here is that there is no participant and the instructor can add a non-existent participant. Further, a flash message is added when instructor adds a new participant. Instructor is forwarded to the user creation page by the corresponding link.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Karan_1.jpg&amp;diff=118155</id>
		<title>File:Karan 1.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Karan_1.jpg&amp;diff=118155"/>
		<updated>2018-11-02T21:13:31Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1831_OSS_Project_Teal_Email_Notifications_Enhancements&amp;diff=118144</id>
		<title>E1831 OSS Project Teal Email Notifications Enhancements</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1831_OSS_Project_Teal_Email_Notifications_Enhancements&amp;diff=118144"/>
		<updated>2018-11-02T21:03:20Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E1831 OSS assignment for Fall 2018, CSC 517.&lt;br /&gt;
&lt;br /&gt;
== About Expertiza ==&lt;br /&gt;
[https://expertiza.ncsu.edu/ Expertiza] is an open source project based on [https://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
== What has been done previously ==&lt;br /&gt;
Students and instructors are notified of various events by e-mail, e.g., creation of a new account, submission of a review on their work, or updating of work that they have reviewed. This project is focused on adding new email functionalities.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
* Issue [https://github.com/expertiza/expertiza/issues/296 #296]: Send out an email to the invitee when a participant sends out an invitation to another participant to join a team. The student who issued the invitation should also be e-mailed when the invitee joins the team. And also, when a student responds to a teammate advertisement, the person who created the advertisement must be notified by email. In general, all activity on ad responses and invitations should be reported to the other party by email (unless these emails are turned off in a (new) profile field).&lt;br /&gt;
* Notify an instructor by e-mail when a student suggests a topic.&lt;br /&gt;
* Issue [https://github.com/expertiza/expertiza/issues/87 #87]: Create an option (in the instructor’s profile) to get a copy of emails being sent to students.&lt;br /&gt;
&lt;br /&gt;
== Files modified under in this project ==&lt;br /&gt;
==== Controllers ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-f186adbcad8c7d0322f09c6448128d3d profile_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4e05ad0d64e6100656b63ad1e78f32c5 users_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-3f9708b6695fc195f497d7279229ce58 suggestions_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4d4587f69e7597b0876f8bd8620e4b3a invitations_controller.rb]&lt;br /&gt;
==== Views ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-618b778ac502cdb33996e09307ea10f5 _invitation_accepted_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4cf05cb698ae8bf7d018d98d32ac91ef _invitation_declined_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-b469a046eb2ce24c8bcebe67e6213ce9 _invitation_pending_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-95a9a005ee228f1bdfa926dd7d2e6ed6 new_suggested_topic.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-a847769ab4f73b3b644c52acd4aa6430 notify_grade_conflict_message.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-589c871157f8b5486be75d6846db3861 _new_submission_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-806051e10c2e890dccd7687300dfddf9 _submission_deadline_test_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-7ce11a3f8a2df2ad7295382fdd8f7909 _additional_links.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-7725211746ade7c4353148f9f91c9170 add.js.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-799a00b67bb0213bee389b71adaf4c7c _prefs.html.erb]&lt;br /&gt;
==== Mailers ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-6338cac8af5d0dac3dd6cf3183d97ce1 mailer_helper.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-9d59b3dd49f673876917117e94433d4e delayed_mailer.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-5354a099931d64748967998ea42d1fc1 mailer.rb]&lt;br /&gt;
==== Models ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-f2caf2e29f94ec94cb27bdb86ec85d40 response.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4676c008b11a5480d73d4a6de01e45b9 user.rb]&lt;br /&gt;
==== Database Migrations ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-9c48d33153eb16cc236ebf7318e77121 _add_copy_of_all_emails_flag_to_user.rb]&lt;br /&gt;
==== Specs ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-3a17ddf9d828caa60f11423f20fb88a9 factories.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-da946a02c81d553b070e087bcfb8051b login_helper.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4d891af414d69728e3576d12df5cfe45 due_date_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-0681f27c5662f797060be86cd862dd1f participant_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-12b107c16792b9ecba685e51b51826f1 user_spec.rb]&lt;br /&gt;
&lt;br /&gt;
== Solutions Implemented ==&lt;br /&gt;
==== Sending mail to Instructor on creation of a new suggestion ====&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_2.jpg]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
As part of the email that is to be sent to the instructor, an important piece of information is the proposer. When a suggestion is made by a student, they can choose to make the suggestion in anonymous mode. The function set_proposer within suggestions controller determines whether the user has checked anonymous suggestion and then assigns the user_id to the proposer. In case, the student has chosen to make an anonymous suggestion, the proposer variable is set as the string “Anonymous”.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_3.jpg]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
To send the email, a mail_instructor function was created. This function requires the suggestion title, proposer, and the email of the receiver. &lt;br /&gt;
# The proposer is set using the set_proposer function.&lt;br /&gt;
# The suggestion title is passed through @suggestion.&lt;br /&gt;
# The assignment to which this suggestion is being made references to the instructor who created the assignment through instructor_id.&lt;br /&gt;
This function then calls new_suggested_topic function in the mailer.rb file to send the mail with the information.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_4.jpg]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The mailer.rb file also gets a new function new_suggested_topic referenced above.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_5.jpg]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The last change made to suggestions controller is calling the mail_instructor method in the create suggestion method. If the assignment references an instructor, the mail method is called on any suggestion being saved. The ‘if’ condition here is put in for a test condition where an assignment is created through the factories and this assignment does not reference an instructor. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_6.jpg]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The final change is the addition of a new file which contains the content and formatting of the mail being sent to the instructor.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Mail_instructor_on_new_suggestion_6.jpg&amp;diff=118143</id>
		<title>File:Mail instructor on new suggestion 6.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Mail_instructor_on_new_suggestion_6.jpg&amp;diff=118143"/>
		<updated>2018-11-02T21:03:04Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Mail_instructor_on_new_suggestion_5.jpg&amp;diff=118138</id>
		<title>File:Mail instructor on new suggestion 5.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Mail_instructor_on_new_suggestion_5.jpg&amp;diff=118138"/>
		<updated>2018-11-02T20:59:32Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1831_OSS_Project_Teal_Email_Notifications_Enhancements&amp;diff=117883</id>
		<title>E1831 OSS Project Teal Email Notifications Enhancements</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1831_OSS_Project_Teal_Email_Notifications_Enhancements&amp;diff=117883"/>
		<updated>2018-11-02T04:12:25Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E1831 OSS assignment for Fall 2018, CSC 517.&lt;br /&gt;
&lt;br /&gt;
== About Expertiza ==&lt;br /&gt;
[https://expertiza.ncsu.edu/ Expertiza] is an open source project based on [https://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
== What has been done previously ==&lt;br /&gt;
Students and instructors are notified of various events by e-mail, e.g., creation of a new account, submission of a review on their work, or updating of work that they have reviewed. This project is focused on adding new email functionalities.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
* Issue [https://github.com/expertiza/expertiza/issues/296 #296]: Send out an email to the invitee when a participant sends out an invitation to another participant to join a team. The student who issued the invitation should also be e-mailed when the invitee joins the team. And also, when a student responds to a teammate advertisement, the person who created the advertisement must be notified by email. In general, all activity on ad responses and invitations should be reported to the other party by email (unless these emails are turned off in a (new) profile field).&lt;br /&gt;
* Notify an instructor by e-mail when a student suggests a topic.&lt;br /&gt;
* Issue [https://github.com/expertiza/expertiza/issues/87 #87]: Create an option (in the instructor’s profile) to get a copy of emails being sent to students.&lt;br /&gt;
&lt;br /&gt;
== Files modified under in this project ==&lt;br /&gt;
==== Controllers ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-f186adbcad8c7d0322f09c6448128d3d profile_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4e05ad0d64e6100656b63ad1e78f32c5 users_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-3f9708b6695fc195f497d7279229ce58 suggestions_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4d4587f69e7597b0876f8bd8620e4b3a invitations_controller.rb]&lt;br /&gt;
==== Views ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-618b778ac502cdb33996e09307ea10f5 _invitation_accepted_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4cf05cb698ae8bf7d018d98d32ac91ef _invitation_declined_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-b469a046eb2ce24c8bcebe67e6213ce9 _invitation_pending_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-95a9a005ee228f1bdfa926dd7d2e6ed6 new_suggested_topic.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-a847769ab4f73b3b644c52acd4aa6430 notify_grade_conflict_message.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-589c871157f8b5486be75d6846db3861 _new_submission_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-806051e10c2e890dccd7687300dfddf9 _submission_deadline_test_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-7ce11a3f8a2df2ad7295382fdd8f7909 _additional_links.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-7725211746ade7c4353148f9f91c9170 add.js.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-799a00b67bb0213bee389b71adaf4c7c _prefs.html.erb]&lt;br /&gt;
==== Mailers ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-6338cac8af5d0dac3dd6cf3183d97ce1 mailer_helper.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-9d59b3dd49f673876917117e94433d4e delayed_mailer.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-5354a099931d64748967998ea42d1fc1 mailer.rb]&lt;br /&gt;
==== Models ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-f2caf2e29f94ec94cb27bdb86ec85d40 response.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4676c008b11a5480d73d4a6de01e45b9 user.rb]&lt;br /&gt;
==== Database Migrations ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-9c48d33153eb16cc236ebf7318e77121 _add_copy_of_all_emails_flag_to_user.rb]&lt;br /&gt;
==== Specs ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-3a17ddf9d828caa60f11423f20fb88a9 factories.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-da946a02c81d553b070e087bcfb8051b login_helper.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4d891af414d69728e3576d12df5cfe45 due_date_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-0681f27c5662f797060be86cd862dd1f participant_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-12b107c16792b9ecba685e51b51826f1 user_spec.rb]&lt;br /&gt;
&lt;br /&gt;
== Solutions Implemented ==&lt;br /&gt;
==== Sending mail to Instructor on creation of a new suggestion ====&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_2.jpg]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
As part of the email that is to be sent to the instructor, an important piece of information is the proposer. When a suggestion is made by a student, they can choose to make the suggestion in anonymous mode. The function set_proposer within suggestions controller determines whether the user has checked anonymous suggestion and then assigns the user_id to the proposer. In case, the student has chosen to make an anonymous suggestion, the proposer variable is set as the string “Anonymous”.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_3.jpg]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
To send the email, a mail_instructor function was created. This function requires the suggestion title, proposer, and the email of the receiver. &lt;br /&gt;
# The proposer is set using the set_proposer function.&lt;br /&gt;
# The suggestion title is passed through @suggestion.&lt;br /&gt;
# The assignment to which this suggestion is being made references to the instructor who created the assignment through instructor_id.&lt;br /&gt;
This function then calls new_suggested_topic function in the mailer.rb file to send the mail with the information.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_4.jpg]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The mailer.rb file also gets a new function new_suggested_topic referenced above.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Mail_instructor_on_new_suggestion_4.jpg&amp;diff=117881</id>
		<title>File:Mail instructor on new suggestion 4.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Mail_instructor_on_new_suggestion_4.jpg&amp;diff=117881"/>
		<updated>2018-11-02T04:10:37Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1831_OSS_Project_Teal_Email_Notifications_Enhancements&amp;diff=117878</id>
		<title>E1831 OSS Project Teal Email Notifications Enhancements</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1831_OSS_Project_Teal_Email_Notifications_Enhancements&amp;diff=117878"/>
		<updated>2018-11-02T04:04:47Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E1831 OSS assignment for Fall 2018, CSC 517.&lt;br /&gt;
&lt;br /&gt;
== About Expertiza ==&lt;br /&gt;
[https://expertiza.ncsu.edu/ Expertiza] is an open source project based on [https://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
== What has been done previously ==&lt;br /&gt;
Students and instructors are notified of various events by e-mail, e.g., creation of a new account, submission of a review on their work, or updating of work that they have reviewed. This project is focused on adding new email functionalities.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
* Issue [https://github.com/expertiza/expertiza/issues/296 #296]: Send out an email to the invitee when a participant sends out an invitation to another participant to join a team. The student who issued the invitation should also be e-mailed when the invitee joins the team. And also, when a student responds to a teammate advertisement, the person who created the advertisement must be notified by email. In general, all activity on ad responses and invitations should be reported to the other party by email (unless these emails are turned off in a (new) profile field).&lt;br /&gt;
* Notify an instructor by e-mail when a student suggests a topic.&lt;br /&gt;
* Issue [https://github.com/expertiza/expertiza/issues/87 #87]: Create an option (in the instructor’s profile) to get a copy of emails being sent to students.&lt;br /&gt;
&lt;br /&gt;
== Files modified under in this project ==&lt;br /&gt;
==== Controllers ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-f186adbcad8c7d0322f09c6448128d3d profile_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4e05ad0d64e6100656b63ad1e78f32c5 users_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-3f9708b6695fc195f497d7279229ce58 suggestions_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4d4587f69e7597b0876f8bd8620e4b3a invitations_controller.rb]&lt;br /&gt;
==== Views ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-618b778ac502cdb33996e09307ea10f5 _invitation_accepted_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4cf05cb698ae8bf7d018d98d32ac91ef _invitation_declined_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-b469a046eb2ce24c8bcebe67e6213ce9 _invitation_pending_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-95a9a005ee228f1bdfa926dd7d2e6ed6 new_suggested_topic.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-a847769ab4f73b3b644c52acd4aa6430 notify_grade_conflict_message.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-589c871157f8b5486be75d6846db3861 _new_submission_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-806051e10c2e890dccd7687300dfddf9 _submission_deadline_test_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-7ce11a3f8a2df2ad7295382fdd8f7909 _additional_links.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-7725211746ade7c4353148f9f91c9170 add.js.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-799a00b67bb0213bee389b71adaf4c7c _prefs.html.erb]&lt;br /&gt;
==== Mailers ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-6338cac8af5d0dac3dd6cf3183d97ce1 mailer_helper.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-9d59b3dd49f673876917117e94433d4e delayed_mailer.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-5354a099931d64748967998ea42d1fc1 mailer.rb]&lt;br /&gt;
==== Models ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-f2caf2e29f94ec94cb27bdb86ec85d40 response.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4676c008b11a5480d73d4a6de01e45b9 user.rb]&lt;br /&gt;
==== Database Migrations ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-9c48d33153eb16cc236ebf7318e77121 _add_copy_of_all_emails_flag_to_user.rb]&lt;br /&gt;
==== Specs ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-3a17ddf9d828caa60f11423f20fb88a9 factories.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-da946a02c81d553b070e087bcfb8051b login_helper.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4d891af414d69728e3576d12df5cfe45 due_date_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-0681f27c5662f797060be86cd862dd1f participant_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-12b107c16792b9ecba685e51b51826f1 user_spec.rb]&lt;br /&gt;
&lt;br /&gt;
== Solutions Implemented ==&lt;br /&gt;
==== Sending mail to Instructor on creation of a new suggestion ====&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_2.jpg]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
As part of the email that is to be sent to the instructor, an important piece of information is the proposer. When a suggestion is made by a student, they can choose to make the suggestion in anonymous mode. The function set_proposer within suggestions controller determines whether the user has checked anonymous suggestion and then assigns the user_id to the proposer. In case, the student has chosen to make an anonymous suggestion, the proposer variable is set as the string “Anonymous”.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_3.jpg]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
To send the email, a mail_instructor function was created. This function requires the suggestion title, proposer, and the email of the receiver. &lt;br /&gt;
# The proposer is set using the set_proposer function.&lt;br /&gt;
# The suggestion title is passed through @suggestion.&lt;br /&gt;
# The assignment to which this suggestion is being made references to the instructor who created the assignment through instructor_id.&lt;br /&gt;
This function then calls new_suggested_topic function in the mailer.rb file to send the mail with the information.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Mail_instructor_on_new_suggestion_3.jpg&amp;diff=117876</id>
		<title>File:Mail instructor on new suggestion 3.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Mail_instructor_on_new_suggestion_3.jpg&amp;diff=117876"/>
		<updated>2018-11-02T04:03:15Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1831_OSS_Project_Teal_Email_Notifications_Enhancements&amp;diff=117874</id>
		<title>E1831 OSS Project Teal Email Notifications Enhancements</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1831_OSS_Project_Teal_Email_Notifications_Enhancements&amp;diff=117874"/>
		<updated>2018-11-02T04:00:44Z</updated>

		<summary type="html">&lt;p&gt;Atewari: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E1831 OSS assignment for Fall 2018, CSC 517.&lt;br /&gt;
&lt;br /&gt;
== About Expertiza ==&lt;br /&gt;
[https://expertiza.ncsu.edu/ Expertiza] is an open source project based on [https://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
== What has been done previously ==&lt;br /&gt;
Students and instructors are notified of various events by e-mail, e.g., creation of a new account, submission of a review on their work, or updating of work that they have reviewed. This project is focused on adding new email functionalities.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
* Issue [https://github.com/expertiza/expertiza/issues/296 #296]: Send out an email to the invitee when a participant sends out an invitation to another participant to join a team. The student who issued the invitation should also be e-mailed when the invitee joins the team. And also, when a student responds to a teammate advertisement, the person who created the advertisement must be notified by email. In general, all activity on ad responses and invitations should be reported to the other party by email (unless these emails are turned off in a (new) profile field).&lt;br /&gt;
* Notify an instructor by e-mail when a student suggests a topic.&lt;br /&gt;
* Issue [https://github.com/expertiza/expertiza/issues/87 #87]: Create an option (in the instructor’s profile) to get a copy of emails being sent to students.&lt;br /&gt;
&lt;br /&gt;
== Files modified under in this project ==&lt;br /&gt;
==== Controllers ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-f186adbcad8c7d0322f09c6448128d3d profile_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4e05ad0d64e6100656b63ad1e78f32c5 users_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-3f9708b6695fc195f497d7279229ce58 suggestions_controller.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4d4587f69e7597b0876f8bd8620e4b3a invitations_controller.rb]&lt;br /&gt;
==== Views ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-618b778ac502cdb33996e09307ea10f5 _invitation_accepted_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4cf05cb698ae8bf7d018d98d32ac91ef _invitation_declined_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-b469a046eb2ce24c8bcebe67e6213ce9 _invitation_pending_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-95a9a005ee228f1bdfa926dd7d2e6ed6 new_suggested_topic.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-a847769ab4f73b3b644c52acd4aa6430 notify_grade_conflict_message.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-589c871157f8b5486be75d6846db3861 _new_submission_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-806051e10c2e890dccd7687300dfddf9 _submission_deadline_test_html.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-7ce11a3f8a2df2ad7295382fdd8f7909 _additional_links.html.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-7725211746ade7c4353148f9f91c9170 add.js.erb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-799a00b67bb0213bee389b71adaf4c7c _prefs.html.erb]&lt;br /&gt;
==== Mailers ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-6338cac8af5d0dac3dd6cf3183d97ce1 mailer_helper.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-9d59b3dd49f673876917117e94433d4e delayed_mailer.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-5354a099931d64748967998ea42d1fc1 mailer.rb]&lt;br /&gt;
==== Models ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-f2caf2e29f94ec94cb27bdb86ec85d40 response.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4676c008b11a5480d73d4a6de01e45b9 user.rb]&lt;br /&gt;
==== Database Migrations ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-9c48d33153eb16cc236ebf7318e77121 _add_copy_of_all_emails_flag_to_user.rb]&lt;br /&gt;
==== Specs ====&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-3a17ddf9d828caa60f11423f20fb88a9 factories.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-da946a02c81d553b070e087bcfb8051b login_helper.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-4d891af414d69728e3576d12df5cfe45 due_date_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-0681f27c5662f797060be86cd862dd1f participant_spec.rb]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1237/files#diff-12b107c16792b9ecba685e51b51826f1 user_spec.rb]&lt;br /&gt;
&lt;br /&gt;
== Solutions Implemented ==&lt;br /&gt;
==== Sending mail to Instructor on creation of a new suggestion ====&lt;br /&gt;
[[File:Mail_instructor_on_new_suggestion_2.jpg]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
As part of the email that is to be sent to the instructor, an important piece of information is the proposer. When a suggestion is made by a student, they can choose to make the suggestion in anonymous mode. The function set_proposer within suggestions controller determines whether the user has checked anonymous suggestion and then assigns the user_id to the proposer. In case, the student has chosen to make an anonymous suggestion, the proposer variable is set as the string “Anonymous”.&lt;/div&gt;</summary>
		<author><name>Atewari</name></author>
	</entry>
</feed>