diff --git a/README.md b/README.md
index 0bfaaa6f9b9..3b727ee3a9d 100644
--- a/README.md
+++ b/README.md
@@ -1,59 +1,20 @@
-Expertiza
+E1971. OSS project Finklestein: Instructors & Institutions
=========
-[![Build Status](https://travis-ci.org/expertiza/expertiza.svg?branch=master)](https://travis-ci.org/expertiza/expertiza)
-[![Coverage Status](https://coveralls.io/repos/github/expertiza/expertiza/badge.svg?branch=master)](https://coveralls.io/github/expertiza/expertiza?branch=master)
-[![Maintainability](https://api.codeclimate.com/v1/badges/f3a41f16c2b6e45aa9d4/maintainability)](https://codeclimate.com/github/expertiza/expertiza/maintainability)
+**Team_4430:**
+lli46, rwu5, yzhu48
-#### Peer review system
+**Mentor**
+Carmen Bentley (cnaiken@ncsu.edu)
-Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.
+**What is does:**
+Models can have many associations. For example, a ‘role’ can have many ‘users’ and the reverse a ‘user’ belongs to a ‘role. One important association in the Expertiza system is that between instructors and the institutions to which they belong. This can be an important attribute to groups, restrict, and even validate user permissions.
-Setup
------
+**What’s wrong with it:**
+Currently, models that can be associated with an institution are provided a pre-populated selection scroll when being created. This list should be presented in alphabetical order, but this is not the case when creating a new course. Additionally, and more importantly, there is an issue of associating an institution with a new instructor that is not listed in the selection scroll.
-### NCSU VCL image
+**What needs to be done:**
+* Fix Issue #987: The institution list should be sorted alphabetically.
+* Fix Issue #964: Adding a new institution during creation of an instructor profile.
+* Fix Issue #1188: Listing of instructors should show their institutions on the same line as their new feature.
-The expertiza environment is already set up in [NC State's VCL](https://vcl.ncsu.edu) image "[CSC517, S18] Ruby on Rails / Expertiza".
-
-Using the VCL is the quickest way to get started, but you may find it awkward developing on a remote machine
-with network lag and having to reinstall gems every time you connect. Installing locally can be a pain though too.
-Life is full of tradeoffs. :-) The good news is that you can start on one environment, push your work to git,
-and switch to another environment if you don't like the one you started with.
-
-### Installing locally
-
-See the Google doc on [setting up the Expertiza development environment](https://docs.google.com/document/d/1tXmwju6R7KQbvycku-bdXxa6rXSUN4BMyvjY3ROmMSw/edit).
-
-
-Depreciation warning: See the Expertiza wiki for setup instructions. Please update the wiki with corrections or additional helpful information. (http://wiki.expertiza.ncsu.edu/index.php/Development:Setup:OSX, http://wiki.expertiza.ncsu.edu/index.php/Development:Setup:Linux:RHEL, http://wiki.expertiza.ncsu.edu/index.php/Creating_a_Linux_Development_Environment_for_Expertiza_-_Installation_Guide)
-
-Contributing
-------------
-
- * [Fork](http://help.github.com/fork-a-repo/) the expertiza project
- * [Create a new branch](http://progit.org/book) for your contribution with a descriptive name
- * [Commit and push](http://progit.org/book) until you are happy with your contribution - follow the style guidelines below
- * Make sure to add tests for it; the tests should fail before your contribution/fix and pass afterward
- * [Send a pull request](http://help.github.com/send-pull-requests) to have your code reviewed for merging back into Expertiza
-
-Style Guidelines
-----------------
-
-We've had many contributors in the past who have used a wide variety of ruby coding styles. It's a mess, and we're trying to unify it.
-
-All new files/contributions should:
-
- * Use unix line endings (Windows users: configure git to use [autocrlf](http://help.github.com/line-endings))
- * Indent with 2 spaces (no tabs; configure your editor) both in ruby and erb
- * Follow the [Ruby Style Guide](https://github.com/bbatsov/ruby-style-guide) style for syntax, formatting, and naming
- * Follow the [design guidelines](https://github.com/expertiza/expertiza/blob/master/design_document.md) for the views.
-
-When editing existing files:
-
- * Keep the existing tabbing (use tabs instead of spaces in files that already use tabs everywhere; otherwise use spaces)
- * Keep the existing line ending style (dos/unix)
- * Follow the Ruby style Guide on code you add or edit, as above
-
-Please do no go crazy changing old code to match these guidelines; it will just create lots of potential merge conflicts.
-Applying style guidelines to code you add and modify is good enough. :-)
diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb
index 0dd3f62572d..770136d6c9d 100644
--- a/app/controllers/users_controller.rb
+++ b/app/controllers/users_controller.rb
@@ -91,7 +91,7 @@ def show
get_role
# obtain number of assignments participated
@assignment_participant_num = 0
- AssignmentParticipant.where(user_id: @user.id).each {|_participant| @assignment_participant_num += 1 }
+ AssignmentParticipant.where(user_id: @user.id).each { |_participant| @assignment_participant_num += 1 }
# judge whether this user become reviewer or reviewee
@maps = ResponseMap.where('reviewee_id = ? or reviewer_id = ?', params[:id], params[:id])
# count the number of users in DB
@@ -116,6 +116,13 @@ def create
# if the user name already exists, register the user by email address
check = User.find_by(name: params[:user][:name])
params[:user][:name] = params[:user][:email] unless check.nil?
+ # check whether the institution exists or not
+ # if it exists, return that institution
+ # if not create a new one(in the view page, the user choose other institution)
+ if params[:user][:institution_id].empty?
+ institution = Institution.find_or_create_by(name: params[:institution][:name])
+ params[:user][:institution_id] = institution.id
+ end
@user = User.new(user_params)
@user.institution_id = params[:user][:institution_id]
# record the person who created this new user
@@ -137,6 +144,7 @@ def create
redirect_to action: 'list'
else
foreign
+ flash[:error] = "Create Instructor Error!"
render action: 'new'
end
end
@@ -297,7 +305,7 @@ def user_params
def requested_user_params
params.require(:user).permit(:name, :role_id, :fullname, :institution_id, :email)
- .merge(self_introduction: params[:requested_user][:self_introduction])
+ .merge(self_introduction: params[:requested_user][:self_introduction])
end
def get_role
diff --git a/app/models/user.rb b/app/models/user.rb
index 7d706147483..20fd34f534b 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -47,7 +47,7 @@ def list_mine(object_type, user_id)
def get_available_users(name)
lesser_roles = role.get_parents
all_users = User.all(conditions: ['name LIKE ?', "#{name}%"], limit: 20) # higher limit, since we're filtering
- visible_users = all_users.select {|user| lesser_roles.include? user.role }
+ visible_users = all_users.select { |user| lesser_roles.include? user.role }
visible_users[0, 10] # the first 10
end
@@ -108,6 +108,18 @@ def first_name(ip_address = nil)
User.anonymized_view?(ip_address) ? self.role.name : fullname.try(:[], /,.+/).try(:[], /\w+/) || ''
end
+ # get the user's institution
+ def institution(ip_address = nil)
+ if User.anonymized_view?(ip_address)
+ self.role.name + ', ' + self.id.to_s
+ else
+ # check whether this user is an instructor and has an affiliated institution
+ if self[:role_id] == 2
+ self[:institution_id].nil? ? "" : Institution.find(self[:institution_id]).name
+ end
+ end
+ end
+
def email(ip_address = nil)
User.anonymized_view?(ip_address) ? self.role.name + '_' + self.id.to_s + '@mailinator.com' : self[:email]
end
@@ -192,11 +204,16 @@ def get_instructor
def instructor_id
case role.name
- when 'Super-Administrator' then id
- when 'Administrator' then id
- when 'Instructor' then id
- when 'Teaching Assistant' then Ta.get_my_instructor(id)
- else raise NotImplementedError, "for role #{role.name}"
+ when 'Super-Administrator' then
+ id
+ when 'Administrator' then
+ id
+ when 'Instructor' then
+ id
+ when 'Teaching Assistant' then
+ Ta.get_my_instructor(id)
+ else
+ raise NotImplementedError, "for role #{role.name}"
end
end
@@ -222,7 +239,7 @@ def generate_keys
# return the new private key
new_key.to_pem
- end
+ end
def initialize(attributes = nil)
super(attributes)
diff --git a/app/views/course/_course.html.erb b/app/views/course/_course.html.erb
index d01d98f5c5c..26123b17999 100644
--- a/app/views/course/_course.html.erb
+++ b/app/views/course/_course.html.erb
@@ -1,6 +1,7 @@