Merge branch 'dev_hjq' of http://repository.trustie.net/xianbo/trustie2 into dev_hjq
commit
1cf774d6a5
@ -0,0 +1,3 @@
|
|||||||
|
# Place all the behaviors and hooks related to the matching controller here.
|
||||||
|
# All this logic will automatically be available in application.js.
|
||||||
|
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/
|
@ -0,0 +1,3 @@
|
|||||||
|
# Place all the behaviors and hooks related to the matching controller here.
|
||||||
|
# All this logic will automatically be available in application.js.
|
||||||
|
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/
|
@ -0,0 +1,3 @@
|
|||||||
|
# Place all the behaviors and hooks related to the matching controller here.
|
||||||
|
# All this logic will automatically be available in application.js.
|
||||||
|
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/
|
@ -0,0 +1,3 @@
|
|||||||
|
# Place all the behaviors and hooks related to the matching controller here.
|
||||||
|
# All this logic will automatically be available in application.js.
|
||||||
|
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/
|
@ -0,0 +1,3 @@
|
|||||||
|
# Place all the behaviors and hooks related to the matching controller here.
|
||||||
|
# All this logic will automatically be available in application.js.
|
||||||
|
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/
|
@ -0,0 +1,3 @@
|
|||||||
|
# Place all the behaviors and hooks related to the matching controller here.
|
||||||
|
# All this logic will automatically be available in application.js.
|
||||||
|
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/
|
@ -0,0 +1,3 @@
|
|||||||
|
// Place all the styles related to the org_courses controller here.
|
||||||
|
// They will automatically be included in application.css.
|
||||||
|
// You can use Sass (SCSS) here: http://sass-lang.com/
|
@ -0,0 +1,3 @@
|
|||||||
|
// Place all the styles related to the org_document_comment controller here.
|
||||||
|
// They will automatically be included in application.css.
|
||||||
|
// You can use Sass (SCSS) here: http://sass-lang.com/
|
@ -0,0 +1,3 @@
|
|||||||
|
// Place all the styles related to the OrgMember controller here.
|
||||||
|
// They will automatically be included in application.css.
|
||||||
|
// You can use Sass (SCSS) here: http://sass-lang.com/
|
@ -0,0 +1,3 @@
|
|||||||
|
// Place all the styles related to the org_projects controller here.
|
||||||
|
// They will automatically be included in application.css.
|
||||||
|
// You can use Sass (SCSS) here: http://sass-lang.com/
|
@ -0,0 +1,3 @@
|
|||||||
|
// Place all the styles related to the org_subfields controller here.
|
||||||
|
// They will automatically be included in application.css.
|
||||||
|
// You can use Sass (SCSS) here: http://sass-lang.com/
|
@ -0,0 +1,3 @@
|
|||||||
|
// Place all the styles related to the organizations controller here.
|
||||||
|
// They will automatically be included in application.css.
|
||||||
|
// You can use Sass (SCSS) here: http://sass-lang.com/
|
@ -0,0 +1,20 @@
|
|||||||
|
class OrgCoursesController < ApplicationController
|
||||||
|
def create
|
||||||
|
org_ids = params[:orgNames]
|
||||||
|
@course = Course.find(params[:course_id])
|
||||||
|
org_ids.each do |org_id|
|
||||||
|
if OrgCourse.where("organization_id =? and course_id =?", org_id.to_i, params[:course_id].to_i).count == 0
|
||||||
|
OrgCourse.create(:organization_id => org_id.to_i, :course_id => params[:course_id].to_i, :created_at => Time.now)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
respond_to do |format|
|
||||||
|
format.js
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def destroy
|
||||||
|
@course = Course.find(params[:course_id])
|
||||||
|
@org_course = OrgCourse.find(params[:id])
|
||||||
|
@org_course.destroy
|
||||||
|
end
|
||||||
|
end
|
@ -0,0 +1,57 @@
|
|||||||
|
class OrgMemberController < ApplicationController
|
||||||
|
|
||||||
|
def org_member_autocomplete
|
||||||
|
@org = Organization.find(params[:org])
|
||||||
|
@flag = params[:flag] || false
|
||||||
|
respond_to do |format|
|
||||||
|
format.js
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def create
|
||||||
|
@org = Organization.find(params[:org])
|
||||||
|
if params[:membership].nil?
|
||||||
|
@fail_hint = l(:label_blank_user_lists_for_org)
|
||||||
|
else
|
||||||
|
member_ids = params[:membership][:user_ids]
|
||||||
|
role_id = params[:orgRole]
|
||||||
|
member_ids.each do |user_id|
|
||||||
|
member = OrgMember.create(:user_id=>user_id, :created_at => Time.now)
|
||||||
|
@org.org_members << member
|
||||||
|
OrgMemberRole.create(:org_member_id => member.id, :role_id => role_id)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
respond_to do |format|
|
||||||
|
format.js
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
@member = OrgMember.find(params[:id])
|
||||||
|
#@member.change_role params[:org_member][:role_ids]
|
||||||
|
@member_role = @member.org_member_roles[0]
|
||||||
|
@member_role.role_id = params[:org_member][:role_ids][0]
|
||||||
|
@member_role.save
|
||||||
|
@org = @member.organization
|
||||||
|
respond_to do |format|
|
||||||
|
format.js
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def new
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def destroy
|
||||||
|
member = OrgMember.find(params[:id])
|
||||||
|
@org = member.organization
|
||||||
|
member.destroy
|
||||||
|
respond_to do |format|
|
||||||
|
format.js
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def index
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
@ -0,0 +1,19 @@
|
|||||||
|
class OrgProjectsController < ApplicationController
|
||||||
|
def create
|
||||||
|
org_ids = params[:orgNames]
|
||||||
|
@project = Project.find(params[:project_id])
|
||||||
|
org_ids.each do |org_id|
|
||||||
|
if OrgProject.where("organization_id =? and project_id =?", org_id.to_i, @project.id).count == 0
|
||||||
|
OrgProject.create(:organization_id => org_id.to_i, :project_id => params[:project_id].to_i, :created_at => Time.now)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
respond_to do |format|
|
||||||
|
format.js
|
||||||
|
end
|
||||||
|
end
|
||||||
|
def destroy
|
||||||
|
@project = Project.find(params[:project_id])
|
||||||
|
@org_project = OrgProject.find(params[:id])
|
||||||
|
@org_project.destroy
|
||||||
|
end
|
||||||
|
end
|
@ -0,0 +1,19 @@
|
|||||||
|
class OrgSubfieldsController < ApplicationController
|
||||||
|
def create
|
||||||
|
@subfield = OrgSubfield.create(:name => params[:name])
|
||||||
|
@organization = Organization.find(params[:organization_id])
|
||||||
|
@organization.org_subfields << @subfield
|
||||||
|
@subfield.update_attributes(:priority => @subfield.id)
|
||||||
|
end
|
||||||
|
|
||||||
|
def destroy
|
||||||
|
@subfield = OrgSubfield.find(params[:id])
|
||||||
|
@organization = Organization.find(@subfield.organization_id)
|
||||||
|
@subfield.destroy
|
||||||
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
@subfield = OrgSubfield.find(params[:id])
|
||||||
|
@subfield.update_attributes(:name => params[:name])
|
||||||
|
end
|
||||||
|
end
|
@ -1,55 +0,0 @@
|
|||||||
class OrganizationController < ApplicationController
|
|
||||||
# layout 'base_projects'
|
|
||||||
before_filter :require_admin, :except => [:index]
|
|
||||||
|
|
||||||
def index
|
|
||||||
#@projects = Project.find_by_sql("SELECT * FROM projects WHERE id IN (select MAX(id) from projects GROUP BY enterprise_name)")
|
|
||||||
@organizations = Organization.all
|
|
||||||
respond_to do |format|
|
|
||||||
format.html
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def new
|
|
||||||
@organizations = Organization.new
|
|
||||||
respond_to do |format|
|
|
||||||
format.html
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def create
|
|
||||||
@organizations = Organization.new
|
|
||||||
@organizations.name = params[:organization][:name]
|
|
||||||
if @organizations.save
|
|
||||||
redirect_to admin_organization_url
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def edit
|
|
||||||
@organization = Organization.find params[:id]
|
|
||||||
respond_to do |format|
|
|
||||||
format.html
|
|
||||||
end
|
|
||||||
rescue Exception => e
|
|
||||||
render_404
|
|
||||||
end
|
|
||||||
|
|
||||||
def update
|
|
||||||
@organization = Organization.find params[:id]
|
|
||||||
@organization.name = params[:organization][:name]
|
|
||||||
if @organization.save
|
|
||||||
redirect_to admin_organization_url
|
|
||||||
end
|
|
||||||
rescue Exception => e
|
|
||||||
render_404
|
|
||||||
end
|
|
||||||
|
|
||||||
def destroy
|
|
||||||
@organization = Organization.find params[:id]
|
|
||||||
if @organization.destroy
|
|
||||||
redirect_to admin_organization_url
|
|
||||||
end
|
|
||||||
rescue Exception => e
|
|
||||||
render_404
|
|
||||||
end
|
|
||||||
end
|
|
@ -0,0 +1,271 @@
|
|||||||
|
# encoding: utf-8
|
||||||
|
class OrganizationsController < ApplicationController
|
||||||
|
|
||||||
|
|
||||||
|
helper :sort
|
||||||
|
include SortHelper
|
||||||
|
helper :custom_fields
|
||||||
|
include CustomFieldsHelper
|
||||||
|
include AvatarHelper
|
||||||
|
include WordsHelper
|
||||||
|
include GitlabHelper
|
||||||
|
include UserScoreHelper
|
||||||
|
|
||||||
|
include PollHelper
|
||||||
|
helper :user_score
|
||||||
|
helper :journals
|
||||||
|
|
||||||
|
# added by liuping 关注
|
||||||
|
|
||||||
|
helper :watchers
|
||||||
|
helper :activities
|
||||||
|
|
||||||
|
### added by william
|
||||||
|
include ActsAsTaggableOn::TagsHelper
|
||||||
|
|
||||||
|
# fq
|
||||||
|
helper :words
|
||||||
|
helper :project_score
|
||||||
|
helper :issues
|
||||||
|
include UsersHelper
|
||||||
|
before_filter :find_organization, :only => [:show, :members]
|
||||||
|
layout 'base_org'
|
||||||
|
def index
|
||||||
|
|
||||||
|
end
|
||||||
|
def new
|
||||||
|
@organization = Organization.new
|
||||||
|
render :layout => 'new_base'
|
||||||
|
end
|
||||||
|
|
||||||
|
def edit
|
||||||
|
@organization = Organization.find(params[:id])
|
||||||
|
end
|
||||||
|
|
||||||
|
def destroy
|
||||||
|
@organization = Organization.find(params[:id])
|
||||||
|
@organization.destroy
|
||||||
|
respond_to do |format|
|
||||||
|
format.html{ redirect_to admin_organization_path }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def create
|
||||||
|
@organization = Organization.new
|
||||||
|
@organization.name = params[:organization][:name]
|
||||||
|
@organization.description = params[:organization][:description]
|
||||||
|
@organization.is_public = params[:organization][:is_public]
|
||||||
|
@organization.creator_id = User.current.id
|
||||||
|
member = OrgMember.new(:user_id => User.current.id)
|
||||||
|
|
||||||
|
@organization.org_members << member
|
||||||
|
if @organization.save
|
||||||
|
OrgMemberRole.create(:org_member_id => member.id, :role_id => 11)
|
||||||
|
redirect_to organization_path(@organization)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def show
|
||||||
|
if @organization.is_public? || User.current.admin? || User.current.member_of_org?(@organization)
|
||||||
|
@organization = Organization.find(params[:id])
|
||||||
|
project_ids = @organization.projects.map(&:id) << 0
|
||||||
|
course_ids = @organization.courses.map(&:id) << 0
|
||||||
|
course_types = "('Message','News','HomeworkCommon','Poll','Course')"
|
||||||
|
case params[:type]
|
||||||
|
when nil
|
||||||
|
@org_activities = OrgActivity.where("(container_id =? and container_type =?) " +
|
||||||
|
"or (container_type ='Project' and org_act_type in ('Issue','Message','ProjectCreateInfo') and container_id in (#{project_ids.join(',')})) "+
|
||||||
|
"or (container_type ='Course' and org_act_type in #{course_types} and container_id in (#{course_ids.join(',')}))",
|
||||||
|
@organization.id, 'Organization').order('updated_at desc').page(params[:page] || 1).per(10)
|
||||||
|
when 'project_issue'
|
||||||
|
@org_activities = OrgActivity.where("container_type = 'Project' and org_act_type = 'Issue' and container_id in (#{project_ids.join(',')})").order('updated_at desc').page(params[:page] || 1).per(10)
|
||||||
|
when 'project_message'
|
||||||
|
@org_activities = OrgActivity.where("container_type = 'Project' and org_act_type = 'Message' and container_id in (#{project_ids.join(',')})").order('updated_at desc').page(params[:page] || 1).per(10)
|
||||||
|
when 'org'
|
||||||
|
@org_activities = OrgActivity.where("container_id =? and container_type =?",@organization.id, 'Organization').order('updated_at desc').page(params[:page] || 1).per(10)
|
||||||
|
when 'course_homework'
|
||||||
|
@org_activities = OrgActivity.where("container_type = 'Course' and org_act_type = 'HomeworkCommon' and container_id in (#{course_ids.join(',')})").order('updated_at desc').page(params[:page] || 1).per(10)
|
||||||
|
when 'course_news'
|
||||||
|
@org_activities = OrgActivity.where("container_type = 'Course' and org_act_type = 'News' and container_id in (#{course_ids.join(',')})").order('updated_at desc').page(params[:page] || 1).per(10)
|
||||||
|
when 'course_message'
|
||||||
|
@org_activities = OrgActivity.where("container_type = 'Course' and org_act_type = 'Message' and container_id in (#{course_ids.join(',')})").order('updated_at desc').page(params[:page] || 1).per(10)
|
||||||
|
when 'course_poll'
|
||||||
|
@org_activities = OrgActivity.where("container_type = 'Course' and org_act_type = 'Poll' and container_id in (#{course_ids.join(',')})").order('updated_at desc').page(params[:page] || 1).per(10)
|
||||||
|
end
|
||||||
|
@page = params[:page]
|
||||||
|
respond_to do |format|
|
||||||
|
format.html
|
||||||
|
format.js
|
||||||
|
end
|
||||||
|
else
|
||||||
|
render_403
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
@organization = Organization.find(params[:id])
|
||||||
|
@organization.name = params[:organization][:name]
|
||||||
|
@organization.description = params[:organization][:description]
|
||||||
|
@organization.domain = params[:organization][:domain]
|
||||||
|
@organization.is_public = params[:organization][:is_public] == 'on' ? 1 : 0
|
||||||
|
#@organization.name = params[:organization][:name]
|
||||||
|
@organization.save
|
||||||
|
respond_to do |format|
|
||||||
|
format.html { redirect_to setting_organization_path(@organization)}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def check_uniq
|
||||||
|
@check = false;
|
||||||
|
@org_name = params[:org_name].strip
|
||||||
|
@config_page = params[:config_page]
|
||||||
|
sameName = @config_page ? Organization.where('name = ? and id != ?',params[:org_name],params[:org_id].to_i).count == 0 : Organization.where('name = ?',params[:org_name]).count == 0
|
||||||
|
if sameName == true
|
||||||
|
@check = true
|
||||||
|
end
|
||||||
|
respond_to do |format|
|
||||||
|
format.js
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def find_organization
|
||||||
|
@organization = Organization.find(params[:id])
|
||||||
|
end
|
||||||
|
|
||||||
|
def setting
|
||||||
|
@organization = Organization.find(params[:id])
|
||||||
|
|
||||||
|
if User.current.admin? || User.current.admin_of_org?(@organization)
|
||||||
|
else
|
||||||
|
render_403
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
def clear_org_avatar_temp
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def set_homepage
|
||||||
|
@org = Organization.find(params[:id])
|
||||||
|
@org.home_id = params[:home_id]
|
||||||
|
@org.save
|
||||||
|
# respond_to do |format|
|
||||||
|
# format.html {redirect_to organization_path(org)}
|
||||||
|
# end
|
||||||
|
end
|
||||||
|
|
||||||
|
def cancel_homepage
|
||||||
|
@org = Organization.find(params[:id])
|
||||||
|
@org.home_id = nil
|
||||||
|
@org.save
|
||||||
|
end
|
||||||
|
|
||||||
|
def autocomplete_search
|
||||||
|
@project = Project.find(params[:project_id])
|
||||||
|
#@flag = params[:flag] || false
|
||||||
|
respond_to do |format|
|
||||||
|
format.js
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def members
|
||||||
|
if @organization.is_public? || User.current.admin? || User.current.member_of_org?(@organization)
|
||||||
|
@members = OrgMember.where("organization_id =?", @organization.id)
|
||||||
|
else
|
||||||
|
render_403
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def more_org_projects
|
||||||
|
@organization = Organization.find params[:id]
|
||||||
|
@page = params[:page]
|
||||||
|
@org_projects = @organization.projects.reorder('created_at').uniq.page((params[:page].to_i || 1) +1).per(5)
|
||||||
|
respond_to do |format|
|
||||||
|
format.js
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def more_org_courses
|
||||||
|
@organization = Organization.find(params[:id])
|
||||||
|
@page = params[:page]
|
||||||
|
@org_courses = @organization.courses.reorder('created_at').uniq.page((params[:page].to_i || 1) + 1 ).per(5)
|
||||||
|
respond_to do |format|
|
||||||
|
format.js
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def join_course_menu
|
||||||
|
@organization = Organization.find(params[:id])
|
||||||
|
respond_to do |format|
|
||||||
|
format.js
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def search_courses
|
||||||
|
@organization = Organization.find(params[:id])
|
||||||
|
condition = '%%'
|
||||||
|
if !params[:name].nil?
|
||||||
|
condition = "%#{params[:name].strip}%".gsub(" ","")
|
||||||
|
end
|
||||||
|
sql = "select courses.* from courses inner join members on courses.id = members.course_id where members.user_id = #{User.current.id} and courses.name like '#{condition}'"+
|
||||||
|
"and courses.id not in (select distinct org_courses.course_id from org_courses where org_courses.organization_id = #{@organization.id})"
|
||||||
|
#user_courses = Course.find_by_sql(sql)
|
||||||
|
@courses = Course.find_by_sql(sql)
|
||||||
|
# @added_course_ids = @organization.courses.map(&:id)
|
||||||
|
# @courses = []
|
||||||
|
# user_courses.each do |course|
|
||||||
|
# if !@added_course_ids.include?(course.id)
|
||||||
|
# @courses << course
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
end
|
||||||
|
|
||||||
|
def join_courses
|
||||||
|
@organization = Organization.find(params[:id])
|
||||||
|
course_ids = params[:courseNames]
|
||||||
|
course_ids.each do |id|
|
||||||
|
OrgCourse.create(:organization_id => @organization.id, :course_id => id.to_i, :created_at => Time.now)
|
||||||
|
end
|
||||||
|
respond_to do |format|
|
||||||
|
format.js
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def join_project_menu
|
||||||
|
@organization = Organization.find(params[:id])
|
||||||
|
respond_to do |format|
|
||||||
|
format.js
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def search_projects
|
||||||
|
@organization = Organization.find(params[:id])
|
||||||
|
condition = '%%'
|
||||||
|
if !params[:name].nil?
|
||||||
|
condition = "%#{params[:name].strip}%".gsub(" ","")
|
||||||
|
end
|
||||||
|
sql = "select projects.* from projects inner join members on projects.id = members.project_id where members.user_id = #{User.current.id} and projects.status != 9 and projects.name like '#{condition}'" +
|
||||||
|
" and projects.id not in (select org_projects.project_id from org_projects where organization_id = #{@organization.id})"
|
||||||
|
#user_projects = Course.find_by_sql(sql)
|
||||||
|
@projects = Course.find_by_sql(sql)
|
||||||
|
# @added_course_ids = @organization.projects.map(&:id)
|
||||||
|
# @projects = []
|
||||||
|
# user_projects.each do |project|
|
||||||
|
# if !@added_course_ids.include?(project.id)
|
||||||
|
# @projects << project
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
end
|
||||||
|
|
||||||
|
def join_projects
|
||||||
|
@organization = Organization.find(params[:id])
|
||||||
|
project_ids = params[:projectNames]
|
||||||
|
project_ids.each do |id|
|
||||||
|
OrgProject.create(:organization_id => @organization.id, :project_id => id.to_i, :created_at => Time.now)
|
||||||
|
end
|
||||||
|
respond_to do |format|
|
||||||
|
format.js
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
@ -0,0 +1,2 @@
|
|||||||
|
module OrgCoursesHelper
|
||||||
|
end
|
@ -0,0 +1,2 @@
|
|||||||
|
module OrgDocumentCommentHelper
|
||||||
|
end
|
@ -0,0 +1,16 @@
|
|||||||
|
module OrgMemberHelper
|
||||||
|
include ApplicationHelper
|
||||||
|
def find_user_not_in_current_org_by_name org
|
||||||
|
if params[:q] && params[:q].lstrip.rstrip != ""
|
||||||
|
scope = Principal.active.sorted.not_member_of_org(org).like(params[:q])
|
||||||
|
else
|
||||||
|
scope = []
|
||||||
|
end
|
||||||
|
principals = paginateHelper scope,10
|
||||||
|
s = content_tag('ul', project_member_check_box_tags_ex('membership[user_ids][]', principals), :class => 'mb5', :id => 'principals')
|
||||||
|
links = pagination_links_full(@obj_pages, @obj_count, :per_page_links => false, :remote => false, :flag => true){|text, parameters, options|
|
||||||
|
link_to text, org_member_autocomplete_org_member_index_path(parameters.merge(:q => params[:q],:flag => true,:org=> org, :format => 'js')), :remote => true
|
||||||
|
}
|
||||||
|
s + content_tag('ul', links,:class => 'wlist',:style=>'float:left !important', :id => "org_member_pagination_links" )
|
||||||
|
end
|
||||||
|
end
|
@ -0,0 +1,2 @@
|
|||||||
|
module OrgProjectsHelper
|
||||||
|
end
|
@ -0,0 +1,2 @@
|
|||||||
|
module OrgSubfieldsHelper
|
||||||
|
end
|
@ -1,2 +1,22 @@
|
|||||||
module EnterprisesHelper
|
# encoding: utf-8
|
||||||
|
module OrganizationsHelper
|
||||||
|
include ApplicationHelper
|
||||||
|
|
||||||
|
|
||||||
|
def find_user_not_in_current_org_by_name org
|
||||||
|
if params[:q] && params[:q].lstrip.rstrip != ""
|
||||||
|
scope = Principal.active.sorted.not_member_of_org(org).like(params[:q])
|
||||||
|
else
|
||||||
|
scope = []
|
||||||
|
end
|
||||||
|
principals = paginateHelper scope,10
|
||||||
|
s = content_tag('ul', project_member_check_box_tags_ex('membership[user_ids][]', principals), :class => 'mb5', :id => 'principals')
|
||||||
|
links = pagination_links_full(@obj_pages, @obj_count, :per_page_links => false, :remote => false, :flag => true){|text, parameters, options|
|
||||||
|
link_to text, org_member_autocomplete_org_member_index_path( parameters.merge(:q => params[:q],:flag => true,:org=>org, :format => 'js')), :remote => true
|
||||||
|
}
|
||||||
|
s + content_tag('ul', links,:class => 'wlist',:style=>'float:left !important', :id => "org_member_pagination_links" )
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
@ -0,0 +1,5 @@
|
|||||||
|
class CourseContributorScore < ActiveRecord::Base
|
||||||
|
attr_accessible :course_id, :journal_num, :journal_reply_num, :message_num, :message_reply_num, :news_reply_num, :resource_num, :user_id, :total_score
|
||||||
|
belongs_to :course
|
||||||
|
belongs_to :user
|
||||||
|
end
|
@ -0,0 +1,4 @@
|
|||||||
|
class EditorOfDocument < ActiveRecord::Base
|
||||||
|
belongs_to :user, :class_name => 'User', :foreign_key => 'editor_id'
|
||||||
|
belongs_to :org_document_comment
|
||||||
|
end
|
@ -0,0 +1,8 @@
|
|||||||
|
class ExerciseAnswer < ActiveRecord::Base
|
||||||
|
#学生答题
|
||||||
|
include Redmine::SafeAttributes
|
||||||
|
|
||||||
|
belongs_to :user
|
||||||
|
belongs_to :exercise_question
|
||||||
|
belongs_to :exercise_choice
|
||||||
|
end
|
@ -0,0 +1,7 @@
|
|||||||
|
class ExerciseChoice < ActiveRecord::Base
|
||||||
|
include Redmine::SafeAttributes
|
||||||
|
|
||||||
|
belongs_to :exercise_question
|
||||||
|
has_many :exercise_answers, :dependent => :destroy
|
||||||
|
has_many :exercise_standard_answers, :dependent => :destroy
|
||||||
|
end
|
@ -0,0 +1,8 @@
|
|||||||
|
class ExerciseQuestion < ActiveRecord::Base
|
||||||
|
include Redmine::SafeAttributes
|
||||||
|
|
||||||
|
belongs_to :exercise
|
||||||
|
has_many :exercise_choices, :order => "#{ExerciseChoice.table_name}.choice_position",:dependent => :destroy
|
||||||
|
has_many :exercise_answers, :dependent => :destroy
|
||||||
|
has_many :exercise_standard_answers, :dependent => :destroy
|
||||||
|
end
|
@ -0,0 +1,7 @@
|
|||||||
|
class ExerciseStandardAnswer < ActiveRecord::Base
|
||||||
|
#标准答案
|
||||||
|
include Redmine::SafeAttributes
|
||||||
|
|
||||||
|
belongs_to :exercise_question
|
||||||
|
belongs_to :exercise_choice
|
||||||
|
end
|
@ -0,0 +1,6 @@
|
|||||||
|
class ExerciseUser < ActiveRecord::Base
|
||||||
|
include Redmine::SafeAttributes
|
||||||
|
|
||||||
|
belongs_to :user
|
||||||
|
belongs_to :exercise
|
||||||
|
end
|
@ -0,0 +1,5 @@
|
|||||||
|
class OrgActivity < ActiveRecord::Base
|
||||||
|
# attr_accessible :title, :body
|
||||||
|
belongs_to :org_act ,:polymorphic => true
|
||||||
|
belongs_to :container,:polymorphic => true
|
||||||
|
end
|
@ -0,0 +1,5 @@
|
|||||||
|
class OrgCourse < ActiveRecord::Base
|
||||||
|
#attr_accessible :organization, :course, :created_at
|
||||||
|
belongs_to :organization
|
||||||
|
belongs_to :course
|
||||||
|
end
|
@ -0,0 +1,20 @@
|
|||||||
|
class OrgDocumentComment < ActiveRecord::Base
|
||||||
|
attr_accessible :content, :creator_id, :organization_id, :parent_id, :reply_id, :title,:sticky,:locked
|
||||||
|
include Redmine::SafeAttributes
|
||||||
|
belongs_to :organization
|
||||||
|
belongs_to :creator, :class_name => 'User', :foreign_key => 'creator_id'
|
||||||
|
has_many :editor_of_documents, :dependent => :destroy
|
||||||
|
acts_as_tree :order => "#{OrgDocumentComment.table_name}.sticky asc, #{OrgDocumentComment.table_name}.created_at desc"
|
||||||
|
has_many :org_acts, :class_name => 'OrgActivity',:as =>:org_act ,:dependent => :destroy
|
||||||
|
after_create :document_save_as_org_activity
|
||||||
|
|
||||||
|
def document_save_as_org_activity
|
||||||
|
if(self.parent().nil?)
|
||||||
|
self.org_acts << OrgActivity.new(:user_id => User.current.id, :container_id => self.organization.id, :container_type => 'Organization')
|
||||||
|
else
|
||||||
|
act = OrgActivity.where("org_act_type='OrgDocumentComment' and org_act_id =?", self.root.id).first
|
||||||
|
act.update_attributes(:updated_at => self.updated_at)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
@ -0,0 +1,8 @@
|
|||||||
|
class OrgMember < ActiveRecord::Base
|
||||||
|
attr_accessible :organization_id, :role, :user_id
|
||||||
|
belongs_to :organization
|
||||||
|
belongs_to :user
|
||||||
|
has_many :roles ,:through => :org_member_roles,:foreign_key => 'role_id'
|
||||||
|
has_many :org_member_roles,:dependent => :destroy
|
||||||
|
|
||||||
|
end
|
@ -0,0 +1,5 @@
|
|||||||
|
class OrgMemberRole < ActiveRecord::Base
|
||||||
|
# attr_accessible :title, :body
|
||||||
|
belongs_to :org_member
|
||||||
|
belongs_to :role
|
||||||
|
end
|
@ -0,0 +1,5 @@
|
|||||||
|
class OrgProject < ActiveRecord::Base
|
||||||
|
# attr_accessible :title, :body
|
||||||
|
belongs_to :organization
|
||||||
|
belongs_to :project
|
||||||
|
end
|
@ -0,0 +1,3 @@
|
|||||||
|
class OrgSubfield < ActiveRecord::Base
|
||||||
|
belongs_to :organization, :foreign_key => :organization_id
|
||||||
|
end
|
@ -1,5 +1,17 @@
|
|||||||
class Organization < ActiveRecord::Base
|
class Organization < ActiveRecord::Base
|
||||||
attr_accessible :logo_link, :name
|
attr_accessible :name, :description, :creator_id, :home_id, :domain, :is_public
|
||||||
|
has_many :org_members, :dependent => :destroy
|
||||||
|
has_many :org_projects ,:dependent => :destroy
|
||||||
|
has_many :projects,:through => :org_projects
|
||||||
|
has_many :courses, :through => :org_courses
|
||||||
|
has_many :org_document_comments, :dependent => :destroy
|
||||||
|
has_many :org_courses, :dependent => :destroy
|
||||||
|
has_many :org_subfields, :dependent => :destroy
|
||||||
|
has_many :users, :through => :org_members
|
||||||
|
validates_uniqueness_of :name
|
||||||
|
after_create :save_as_org_activity
|
||||||
|
|
||||||
has_many :projects
|
def save_as_org_activity
|
||||||
|
OrgActivity.create(:user_id => User.current.id, :org_act_id => self.id, :org_act_type => 'CreateOrganization', :container_id => self.id, :container_type => 'Organization')
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,3 +1,6 @@
|
|||||||
|
<% if @course %>
|
||||||
$("#user_activity_<%= @user_activity_id%>").replaceWith("<%= escape_javascript(render :partial => 'users/course_news', :locals => {:activity => @news,:user_activity_id =>@user_activity_id}) %>");
|
$("#user_activity_<%= @user_activity_id%>").replaceWith("<%= escape_javascript(render :partial => 'users/course_news', :locals => {:activity => @news,:user_activity_id =>@user_activity_id}) %>");
|
||||||
|
<% else %>
|
||||||
|
$("#user_activity_<%= @user_activity_id%>").replaceWith("<%= escape_javascript(render :partial => 'projects/project_news', :locals => {:activity => @news,:user_activity_id =>@user_activity_id}) %>");
|
||||||
|
<% end %>
|
||||||
init_activity_KindEditor_data('<%= @user_activity_id%>',"","87%");
|
init_activity_KindEditor_data('<%= @user_activity_id%>',"","87%");
|
||||||
|
@ -0,0 +1,47 @@
|
|||||||
|
<% course_file_num = visable_attachemnts_incourse(@course).count%>
|
||||||
|
<% is_teacher = User.current.logged? && (User.current.admin? || User.current.allowed_to?(:as_teacher,@course)) %>
|
||||||
|
<% if show_nav?(@course.homework_commons.count) %>
|
||||||
|
<div class="subNav">
|
||||||
|
<%= link_to l(:label_homework), homework_common_index_path(:course => @course.id), :class => "f14 c_blue02 ml10"%>
|
||||||
|
<%= link_to( "", homework_common_index_path(:course => @course.id,:is_new => 1), :class => 'courseMenuSetting', :title =>"#{l(:label_course_homework_new)}") if is_teacher %>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
<% if show_nav?(@course.news.count) %>
|
||||||
|
<div class="subNav">
|
||||||
|
<%= link_to l(:label_course_news), course_news_index_path(@course), :class => "f14 c_blue02 ml10" %>
|
||||||
|
<%= link_to( "", new_course_news_path(@course), :class => 'courseMenuSetting', :title =>"#{l(:label_course_news_new)}") if is_teacher %>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
<% if show_nav?(course_file_num) %>
|
||||||
|
<div class="subNav">
|
||||||
|
<%= link_to l(:label_course_file), course_files_path(@course), :class => "f14 c_blue02 ml10" %>
|
||||||
|
<% if is_teacher || (@course.publish_resource == 1 && User.current.member_of_course?(@course)) %>
|
||||||
|
<!--link_to( "+#{l(:label_upload_files)}", course_files_path(@course), :class => 'subnav_green ml95 c_white')-->
|
||||||
|
<a class="courseMenuSetting" title="上传资源" href="javascript:void(0);" onclick="course_files_upload();"> </a>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
<% if show_nav?(@course.boards.first ? @course.boards.first.topics.count : 0) %>
|
||||||
|
<div class="subNav">
|
||||||
|
<%= link_to l(:label_course_board), course_boards_path(@course), :class => "f14 c_blue02 ml10" %>
|
||||||
|
<%= link_to( "",course_boards_path(@course, :flag => true, :is_new => 1), :class => 'courseMenuSetting', :title =>"#{l(:label_message_new)}") if User.current.member_of_course?(@course) && @course.boards.first %>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
<% if show_nav?(course_feedback_count) %>
|
||||||
|
<div class="subNav">
|
||||||
|
<%= link_to l(:label_course_feedback), course_feedback_path(@course), :class => "f14 c_blue02 ml10" %>
|
||||||
|
<%= link_to "", course_feedback_path(@course), :class => 'courseMenuSetting', :title =>"#{l(:label_course_feedback)}", :id => "course_jour_count"%>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
<% if show_nav?(course_poll_count) %>
|
||||||
|
<div class="subNav">
|
||||||
|
<%= link_to l(:label_poll), poll_index_path(:polls_type => "Course", :polls_group_id => @course.id), :class => " f14 c_blue02 ml10"%>
|
||||||
|
<%= link_to( "", new_poll_path(:polls_type => "Course",:polls_group_id => @course.id), :class => 'courseMenuSetting', :title =>"#{l(:label_new_poll)}") if is_teacher %>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
<% if show_nav?(User.current.allowed_to?(:as_teacher,@course)? @course.exercises.count : @course.exercises.where("exercise_status=2").count) %>
|
||||||
|
<div class="subNav">
|
||||||
|
<%= link_to "在线测验", exercise_index_path(:course_id => @course.id), :class => " f14 c_blue02 ml10"%>
|
||||||
|
<%= link_to( "", new_exercise_path(:course_id => @course.id), :class => 'courseMenuSetting', :title =>"新建试卷") if is_teacher %>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
@ -0,0 +1,19 @@
|
|||||||
|
<% if @hint_flag.nil? %>
|
||||||
|
if($("#join_orgs_for_course input:checked").size() > 0)
|
||||||
|
{
|
||||||
|
alert("翻页或搜索后将丢失当前选择的用户数据");
|
||||||
|
}
|
||||||
|
<% end %>
|
||||||
|
$("#search_orgs_result_list").html("");
|
||||||
|
$("#search_orgs_result_list").append('<ul class="ml20">');
|
||||||
|
<% @orgs_not_in_course.each do |org|%>
|
||||||
|
link = "<li><label><input type='checkbox'class='mr5 fl mt3' name='orgNames[]' value='<%=org.id%>'/><span class='relateOrgName fl'> <%=org.name %> </span></label></li><div class='cl mt5'></div>";
|
||||||
|
$("#search_orgs_result_list").append(link );
|
||||||
|
<%end %>
|
||||||
|
$("#search_orgs_result_list").append('</ul>')
|
||||||
|
<% if @org_count > 10 %>
|
||||||
|
$("#paginator").html(' <%= pagination_links_full @orgs_page, @org_count ,:per_page_links => true,:remote =>true,:flag=>true%>');
|
||||||
|
$("#paginator").css("display", "block");
|
||||||
|
<% else %>
|
||||||
|
$("#paginator").css("display", "none");
|
||||||
|
<% end %>
|
@ -0,0 +1,12 @@
|
|||||||
|
<ul>
|
||||||
|
<li><span class="relatedListName fb fl">名称</span><span class="relatedListOption fb fl">操作</span></li>
|
||||||
|
<% orgs.each do |org| %>
|
||||||
|
<li>
|
||||||
|
<a href="<%= organization_path(org) %>" class="relatedListName linkBlue fl"><%= org.name %></a>
|
||||||
|
<a href="javascript:void(0);" onclick="cancel_org_course_relation(<%= OrgCourse.where(:organization_id => org.id, :course_id => course_id).first.id %>, '<%= course_id %>');"
|
||||||
|
class = "relatedListOption fl linkGrey3">取消关联</a>
|
||||||
|
<%#= link_to "取消关联", org_course_path(:id => OrgCourse.where(:organization_id => org.id, :course_id => course_id).first.id, :course_id => course_id),
|
||||||
|
:method => 'delete',:remote => true, :class => "relatedListOption fl linkGrey3" %>
|
||||||
|
</li>
|
||||||
|
<% end %>
|
||||||
|
</ul>
|
@ -0,0 +1,85 @@
|
|||||||
|
<!--<div class="members_left">-->
|
||||||
|
<!--<input type="text" id="orgs_not_course_member_search" name="orgAddSearch" placeholder="支持姓名、邮箱、昵称搜索" class="orgAddSearch mb20" />-->
|
||||||
|
<!--<%#= javascript_tag "observeSearchfield('orgs_not_course_member_search', null, '#{ escape_javascript autocomplete_search_organizations_path(:course_id=> @course.id, :format => 'js') }')" %>-->
|
||||||
|
<!--<div id="new_orgs_for_course">-->
|
||||||
|
|
||||||
|
<!--</div>-->
|
||||||
|
<!--</div>-->
|
||||||
|
<%= stylesheet_link_tag 'org' %>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<div class="relateOrg fl">
|
||||||
|
<span class="pic_add fl mr5 mt3"></span><span class="f14 fontBlue fl">关联组织</span>
|
||||||
|
<div class="cl mb5"></div>
|
||||||
|
<%= form_tag url_for(:controller => 'org_courses', :action => 'create', :course_id => @course.id), :id => 'join_orgs_for_course', :remote => true do %>
|
||||||
|
<input type="text" name="orgs" class="searchOrg mb5 ml20" placeholder="请输入组织名称" />
|
||||||
|
<div id="search_orgs_result_list" class="ml20"></div>
|
||||||
|
<ul id="paginator" class="wlist ml20" style="float:none;"></ul>
|
||||||
|
<a href="javascript:void(0);" class="saveBtn db fl ml20 mr15 mb5" onclick="course_join_org(<%= @course.id %>);">关联</a>
|
||||||
|
<a href="javascript:void(0);" class="cancelBtn db fl" onclick="cancel_join_orgs();">取消</a>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
<div class="relatedList fr">
|
||||||
|
<div class="fr mr15">
|
||||||
|
<span class="f14 fontBlue">已关联组织</span>
|
||||||
|
<div id="added_orgs">
|
||||||
|
<%= render :partial => 'courses/settings/added_orgs', :locals => {:orgs => @course.organizations, :course_id => params[:id]} %>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
var lastSearchCondition = '';
|
||||||
|
var page = 1;
|
||||||
|
var count = 0;
|
||||||
|
var maxPage = 0;
|
||||||
|
function search_orgs(e){
|
||||||
|
if($(e.target).val().trim() == lastSearchCondition && lastSearchCondition != '')
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
lastSearchCondition = $(e.target).val().trim();
|
||||||
|
page = 1;
|
||||||
|
$.ajax({
|
||||||
|
url: '<%= url_for(:controller => 'courses', :action => 'search_public_orgs_not_in_course') %>'+'?name='+ e.target.value+'&page='+page,
|
||||||
|
type:'get'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function throttle(method,context,e){
|
||||||
|
clearTimeout(method.tId);
|
||||||
|
method.tId=setTimeout(function(){
|
||||||
|
method.call(context,e);
|
||||||
|
},500);
|
||||||
|
}
|
||||||
|
|
||||||
|
//查询组织
|
||||||
|
$("input[name='orgs']").on('input', function (e) {
|
||||||
|
throttle(search_orgs,window,e);
|
||||||
|
});
|
||||||
|
|
||||||
|
$(document).ready(function(){
|
||||||
|
$.ajax({
|
||||||
|
url: '<%= url_for(:controller => 'courses', :action => 'search_public_orgs_not_in_course') %>'+'?page=1',
|
||||||
|
type:'get'
|
||||||
|
});
|
||||||
|
});
|
||||||
|
function cancel_join_orgs() {
|
||||||
|
$("#join_orgs_for_course input:checked").attr("checked", false);
|
||||||
|
}
|
||||||
|
function course_join_org(courseId) {
|
||||||
|
$.ajax({
|
||||||
|
url: "/org_courses?" + $("#join_orgs_for_course").serialize() + "&course_id=" + courseId,
|
||||||
|
type: "post",
|
||||||
|
success: function (data) {
|
||||||
|
$.ajax({
|
||||||
|
url: "/courses/" + courseId + "/search_public_orgs_not_in_course?hint_flag=true&name=" + $("input[name='orgs']").val().trim(),
|
||||||
|
type: "get"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
</script>
|
@ -0,0 +1,27 @@
|
|||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<script type="text/javascript">
|
||||||
|
function close_alert_form(){hideModal("#alert_form");}
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div id="alert_form">
|
||||||
|
<div class="upload_con">
|
||||||
|
<div class="polls_alert_upload_box">
|
||||||
|
<p class="polls_alert_box_p">
|
||||||
|
<%= message%>
|
||||||
|
</p>
|
||||||
|
<div class="polls_alert_btn_box">
|
||||||
|
<a class="upload_btn" onclick="close_alert_form();">
|
||||||
|
确 定
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1,21 @@
|
|||||||
|
<div id="popbox" style="text-align: center;margin-top: 25px">
|
||||||
|
<% if status == 0 && exercise.time != -1%>
|
||||||
|
<h3 style="font-weight: normal;color: green">提交成功!您的分数是:<%=@score %>分。</h3>
|
||||||
|
<%= link_to "确定", exercise_path(),:class => 'commit'%>
|
||||||
|
<% elsif status == 0 && Time.parse(format_time(exercise.end_time)).strftime("%Y-%m-%d %H:%M:%S") > Time.now.strftime("%Y-%m-%d %H:%M:%S") %>
|
||||||
|
<h3 style="font-weight: normal;color: green">提交成功!</h3>
|
||||||
|
<%= link_to "确定", exercise_index_path(:course_id => @course.id),:class => 'commit'%>
|
||||||
|
<% elsif status == 1 && Time.parse(format_time(exercise.end_time)).strftime("%Y-%m-%d %H:%M:%S") > Time.now.strftime("%Y-%m-%d %H:%M:%S")%>
|
||||||
|
<h3 style="font-weight: normal;color: red">保存成功!</h3>
|
||||||
|
<%= link_to "确定",exercise_index_path(:course_id => @course.id),:class => 'commit'%>
|
||||||
|
<% elsif status == 1 && Time.parse(format_time(exercise.end_time)).strftime("%Y-%m-%d %H:%M:%S") <= Time.now.strftime("%Y-%m-%d %H:%M:%S")%>
|
||||||
|
<h3 style="font-weight: normal;color: red">时间已到!</h3>
|
||||||
|
<%= link_to "确定", exercise_path(),:class => 'commit'%>
|
||||||
|
<% elsif status == 2 %>
|
||||||
|
<h3 style="font-weight: normal;color: red">发生未知错误,请检查您的网络。</h3>
|
||||||
|
<%= link_to "确定", "javascript:void(0)",:onclick => 'hidden_atert_form();',:class => 'commit'%>
|
||||||
|
<% else %>
|
||||||
|
<h3 style="font-weight: normal;color: green">时间已到!您的分数是:<%=@score %>分。</h3>
|
||||||
|
<%= link_to "确定", exercise_path(),:class => 'commit'%>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
@ -0,0 +1,60 @@
|
|||||||
|
<%# has_commit = has_commit_poll?(poll.id ,User.current)%>
|
||||||
|
<% exercise_name = exercise.exercise_name.empty? ? l(:label_poll_new) : exercise.exercise_name%>
|
||||||
|
<% if @is_teacher%>
|
||||||
|
<li title="<%= exercise.exercise_name %>">
|
||||||
|
<div style="width: 310px;float: left;">
|
||||||
|
<%# if has_commit %>
|
||||||
|
<%#= link_to poll_name, poll_result_poll_path(poll.id), :class => "polls_title polls_title_w fl c_dblue"%>
|
||||||
|
<%# else %>
|
||||||
|
<%#= link_to poll_name, exercise_path(poll.id), :class => "polls_title polls_title_w fl c_dblue" %>
|
||||||
|
<%# end %>
|
||||||
|
<%= link_to (index.to_i+1).to_s+". "+exercise_name, exercise_path(exercise.id), :class => "polls_title polls_title_w fl c_dblue" %>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<%# if exercise.exercise_status == 2 %>
|
||||||
|
<!--<li><a class="polls_de fr ml5" onclick="" href="javascript:">关闭</a></li>-->
|
||||||
|
<%# else %>
|
||||||
|
<!--<li class="polls_de_grey fr ml5" title="发布的问卷才能进行关闭">关闭</li>-->
|
||||||
|
<%# end%>
|
||||||
|
|
||||||
|
<%# if exercise.exercise_status == 1%>
|
||||||
|
<!--<li class="polls_de_grey fr ml5">导出</li>-->
|
||||||
|
<%# elsif exercise.exercise_status == 2 || exercise.exercise_status == 3 %>
|
||||||
|
<!--<li><%#= link_to "导出", export_exercise_exercise_path(exercise.id,:format => "xls"), :class => "polls_de fr ml5"%></li>-->
|
||||||
|
<%# end%>
|
||||||
|
<% if exercise.exercise_status == 1 %>
|
||||||
|
<li><a href="javascript:" class="pollsbtn btn_pu fr mr5" onclick="exercise_submit(<%= exercise.id%>,<%= exercise.exercise_name.length %>,<%=index.to_i %>);">发布试卷</a></li>
|
||||||
|
<% elsif exercise.exercise_status == 2%>
|
||||||
|
<li><a href="javascript:" class="pollsbtn btn_de fr mr5" onclick="republish_exercise(<%= exercise.id%>,<%=index.to_i %>);">取消发布</a></li>
|
||||||
|
<% else%>
|
||||||
|
<li class="pollsbtn fr mr10 pollsbtn_grey" style="margin-left: 5px;" >发布试卷</li>
|
||||||
|
<% end%>
|
||||||
|
|
||||||
|
<% if exercise.exercise_status == 1%>
|
||||||
|
<li class="pollsbtn fr mr10 pollsbtn_grey">统计结果</li>
|
||||||
|
<% else %>
|
||||||
|
<li><%= link_to l(:label_statistical_results), student_exercise_list_exercise_path(exercise.id,:course_id => @course.id), :class => "pollsbtn fr mr10"%></li>
|
||||||
|
<% end%>
|
||||||
|
|
||||||
|
<%= link_to(l(:button_delete), exercise,:method => :delete, :confirm => l(:text_are_you_sure), :remote => true, :class => "polls_de fr ml5 mr10") %>
|
||||||
|
|
||||||
|
<% if exercise.exercise_status == 1 %>
|
||||||
|
<li><%= link_to l(:button_edit), edit_exercise_path(exercise.id), :class => "polls_de fr ml10"%></li>
|
||||||
|
<li class="polls_date fr"><%=exercise.publish_time.nil? ? "未发布" : "将于"+format_time(exercise.publish_time.to_s)+"发布"%></li>
|
||||||
|
<% else%>
|
||||||
|
<li class="polls_de_grey fr ml10" title="未发布的试卷才能进行编辑">编辑</li>
|
||||||
|
<li class="polls_date fr">已发布</li>
|
||||||
|
<% end%>
|
||||||
|
|
||||||
|
<% else%>
|
||||||
|
<% if exercise.exercise_status == 2%>
|
||||||
|
<%# if has_commit%>
|
||||||
|
<!--li><%#= link_to poll_name, poll_result_poll_path(poll.id), :class => "polls_title polls_title_st fl c_dblue" %></li>
|
||||||
|
<li class="pollsbtn_tip fl ml5">已答</li-->
|
||||||
|
<%#else%>
|
||||||
|
<%= link_to (index.to_i+1).to_s+". "+exercise_name, exercise_path(exercise.id), :class => "polls_title polls_title_st fl c_dblue"%>
|
||||||
|
<%#end%>
|
||||||
|
<% end%>
|
||||||
|
<li class="polls_date fr mr10">截止时间:<%= format_time(exercise.end_time.to_s)%></li>
|
||||||
|
<% end%>
|
@ -0,0 +1,42 @@
|
|||||||
|
<% mc_question_list = exercise.exercise_questions.where("question_type=1") %>
|
||||||
|
<% mcq_question_list = exercise.exercise_questions.where("question_type=2") %>
|
||||||
|
<% single_question_list = exercise.exercise_questions.where("question_type=3") %>
|
||||||
|
<div class="testStatus" id="mc_question_list" style="display: <%=mc_question_list.count > 0 ? "" : "none" %>">
|
||||||
|
<h3 class="fontGrey3">单选题</h3>
|
||||||
|
<% mc_question_list.each do |exercise_question| %>
|
||||||
|
<div id="poll_questions_<%= exercise_question.id%>">
|
||||||
|
<div id="show_poll_questions_<%= exercise_question.id %>">
|
||||||
|
<%= render :partial => 'show_MC', :locals => {:exercise_question => exercise_question} %>
|
||||||
|
</div>
|
||||||
|
<div id="edit_poll_questions_<%= exercise_question.id %>" style="display: none;">
|
||||||
|
<%= render :partial => 'edit_MC', :locals => {:exercise_question => exercise_question} %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
<div class="testStatus" id="mcq_question_list" style="display: <%=mcq_question_list.count > 0 ? "" : "none" %>">
|
||||||
|
<h3 class="fontGrey3">多选题</h3>
|
||||||
|
<% mcq_question_list.each do |exercise_question| %>
|
||||||
|
<div id="poll_questions_<%= exercise_question.id%>">
|
||||||
|
<div id="show_poll_questions_<%= exercise_question.id %>">
|
||||||
|
<%= render :partial => 'show_MCQ', :locals => {:exercise_question => exercise_question} %>
|
||||||
|
</div>
|
||||||
|
<div id="edit_poll_questions_<%= exercise_question.id %>" style="display: none;">
|
||||||
|
<%= render :partial => 'edit_MCQ', :locals => {:exercise_question => exercise_question} %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
<div class="testStatus" id="single_question_list" style="display: <%=single_question_list.count > 0 ? "" : "none" %>">
|
||||||
|
<h3 class="fontGrey3">填空题</h3>
|
||||||
|
<% single_question_list.each do |exercise_question| %>
|
||||||
|
<div id="poll_questions_<%= exercise_question.id%>">
|
||||||
|
<div id="show_poll_questions_<%= exercise_question.id %>">
|
||||||
|
<%= render :partial => 'show_single', :locals => {:exercise_question => exercise_question} %>
|
||||||
|
</div>
|
||||||
|
<div id="edit_poll_questions_<%= exercise_question.id %>" style="display: none;">
|
||||||
|
<%= render :partial => 'edit_single', :locals => {:exercise_question => exercise_question} %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
@ -0,0 +1,237 @@
|
|||||||
|
<script type="text/javascript">
|
||||||
|
$(function(){
|
||||||
|
$("#RSide").removeAttr("id");
|
||||||
|
$("#homework_page_right").css("min-height",$("#LSide").height()-30);
|
||||||
|
$("#Container").css("width","1000px");
|
||||||
|
<%uncomplete_question =get_uncomplete_question(exercise, User.current) %>;
|
||||||
|
<% if (uncomplete_question.count < 1) %>
|
||||||
|
$("#exercise_submit_btn").html("提交");
|
||||||
|
<% end %>
|
||||||
|
var end_time = <%=exercise.end_time.to_i%>;
|
||||||
|
getTime(end_time);
|
||||||
|
/*start_time = new Date();
|
||||||
|
start_time.setFullYear(<%#=exercise_user.start_at.year%>);
|
||||||
|
start_time.setMonth(<%#=exercise_user.start_at.month%>);
|
||||||
|
start_time.setDate(<%#=exercise_user.start_at.day%>);
|
||||||
|
start_time.setHours(<%#=exercise_user.start_at.hour%>);
|
||||||
|
start_time.setMinutes(<%#=exercise_user.start_at.min%>);
|
||||||
|
start_time.setSeconds(<%#=exercise_user.start_at.sec%>);
|
||||||
|
//alert(start_time);
|
||||||
|
end_time = start_time.getTime() + 1000*60*<%#=exercise.time %>;
|
||||||
|
getTime(end_time);*/
|
||||||
|
});
|
||||||
|
function getTime(end_time) {
|
||||||
|
//alert(end_time);
|
||||||
|
now = new Date();
|
||||||
|
var total_seconds = now.getTime()/1000 - end_time;
|
||||||
|
if (total_seconds > 0) {
|
||||||
|
$("#exercise_submit_btn").click();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
setTimeout("getTime("+end_time+");", 1000);
|
||||||
|
//start = new Date(start_time);
|
||||||
|
//end_time = start_time;
|
||||||
|
//var total_seconds = total_seconds - 1;
|
||||||
|
/*var hours = total_seconds / 60 / 60;
|
||||||
|
var hoursRound = Math.floor(hours);
|
||||||
|
var minutes = total_seconds /60 - (60 * hoursRound);
|
||||||
|
var minutesRound = Math.floor(minutes);
|
||||||
|
var seconds = total_seconds - (60 * 60 * hoursRound) - (60 * minutesRound);
|
||||||
|
var secondsRound = Math.round(seconds);
|
||||||
|
$("#rest_hours").html(hoursRound);
|
||||||
|
$("#rest_minutes").html(minutesRound);
|
||||||
|
$("#rest_seconds").html(secondsRound);*/
|
||||||
|
//if(total_seconds >0) {
|
||||||
|
//setTimeout("getTime("+end_time+");", 1000);
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<div class="homepageRight mt0 ml10">
|
||||||
|
<div class="resources">
|
||||||
|
<div class="testStatus"><!--头部显示 start-->
|
||||||
|
<h1 class="ur_page_title" id="polls_name_h"><%= exercise.exercise_name%></h1>
|
||||||
|
<div id="start_time" style="display: none"><%=exercise_user.start_at %></div>
|
||||||
|
<div class="fontGrey2">
|
||||||
|
<span class="mr100">开始时间:<%=Time.parse(h(exercise_user.start_at)).strftime("%Y-%m-%d %H:%M:%S")%></span>
|
||||||
|
<span class="mr100">截止时间:<%=Time.parse(h(exercise.end_time)).strftime("%Y-%m-%d %H:%M:%S")%></span>
|
||||||
|
<% unless exercise.time == -1 %>
|
||||||
|
<span class="fr">测验时长:<%=exercise.time %>分钟</span>
|
||||||
|
<% end %>
|
||||||
|
<!--
|
||||||
|
<span class="fr">剩余时长:<span class="c_red" id="rest_hours"></span> 小时 <span class="c_red" id="rest_minutes"></span> 分钟 <span class="c_red" id="rest_seconds"></span> 秒</span>
|
||||||
|
-->
|
||||||
|
</div>
|
||||||
|
<div class="testDesEdit mt5"><%= exercise.exercise_description.nil? ? "" : exercise.exercise_description.html_safe%></div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</div>
|
||||||
|
<% mc_question_list = exercise.exercise_questions.where("question_type=1").shuffle %>
|
||||||
|
<% mcq_question_list = exercise.exercise_questions.where("question_type=2").shuffle %>
|
||||||
|
<% single_question_list = exercise.exercise_questions.where("question_type=3").shuffle %>
|
||||||
|
<div class="testStatus" id="mc_question_list" style="display: <%=mc_question_list.count > 0 ? "" : "none" %>">
|
||||||
|
<h3 class="fontGrey3">单选题</h3>
|
||||||
|
<% mc_question_list.each_with_index do |exercise_question, list_index| %>
|
||||||
|
<div id="poll_questions_<%= exercise_question.id%>">
|
||||||
|
<div id="show_poll_questions_<%= exercise_question.id %>">
|
||||||
|
<div>
|
||||||
|
<div class="testEditTitle"> 第<%= list_index+1%>题:<%= exercise_question.question_title %> (<%= exercise_question.question_score %>分)
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<div class="ur_inputs">
|
||||||
|
<table class="ur_table" style="width:675px;">
|
||||||
|
<tbody>
|
||||||
|
<% exercise_question.exercise_choices.reorder("choice_position").each_with_index do |exercise_choice,index| %>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label>
|
||||||
|
<script>
|
||||||
|
function click_<%= exercise_choice.id %>(obj)
|
||||||
|
{
|
||||||
|
$.ajax({
|
||||||
|
type: "post",
|
||||||
|
url: "<%= commit_answer_exercise_path(exercise) %>",
|
||||||
|
data: {
|
||||||
|
exercise_choice_id: <%= exercise_choice.id %>,
|
||||||
|
exercise_question_id: <%= exercise_question.id %>
|
||||||
|
},
|
||||||
|
success: function (data) {
|
||||||
|
var dataObj = eval(data);
|
||||||
|
if(dataObj.text == "ok")
|
||||||
|
{
|
||||||
|
obj.checked = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
obj.checked = false;
|
||||||
|
}
|
||||||
|
if(dataObj.complete == 1) {
|
||||||
|
$("#exercise_submit_btn").html("提交");
|
||||||
|
} else {
|
||||||
|
$("#exercise_submit_btn").html("保存");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<%= radio_button "exercise",exercise_question.id.to_s+"exercise_choice_id",exercise_choice.id,:class=>"ur_radio",:onclick =>"click_#{exercise_choice.id}(this);return false;",:checked => answer_be_selected?(exercise_choice,User.current),:disabled => !@can_edit_excercise %>
|
||||||
|
<%= convert_to_char((index+1).to_s)%> <%= exercise_choice.choice_text%>
|
||||||
|
</label>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<% end %>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
<div class="testStatus" id="mcq_question_list" style="display: <%=mcq_question_list.count > 0 ? "" : "none" %>">
|
||||||
|
<h3 class="fontGrey3">多选题</h3>
|
||||||
|
<% mcq_question_list.each_with_index do |exercise_question,list_index| %>
|
||||||
|
<div id="poll_questions_<%= exercise_question.id%>">
|
||||||
|
<div id="show_poll_questions_<%= exercise_question.id %>">
|
||||||
|
<div>
|
||||||
|
<div class="testEditTitle"> 第<%= list_index+1%>题:<%= exercise_question.question_title %> (<%= exercise_question.question_score %>分)
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<div class="ur_inputs">
|
||||||
|
<table class="ur_table" style="width:675px;">
|
||||||
|
<tbody>
|
||||||
|
<% exercise_question.exercise_choices.reorder("choice_position").each_with_index do |exercise_choice,index| %>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label>
|
||||||
|
<script>
|
||||||
|
function click_<%= exercise_choice.id %>(obj)
|
||||||
|
{
|
||||||
|
$.ajax({
|
||||||
|
type: "post",
|
||||||
|
url: "<%= commit_answer_exercise_path(exercise) %>",
|
||||||
|
data: {
|
||||||
|
exercise_choice_id: <%= exercise_choice.id %>,
|
||||||
|
exercise_question_id: <%= exercise_question.id %>
|
||||||
|
},
|
||||||
|
success: function (data) {
|
||||||
|
var dataObj = eval(data);
|
||||||
|
if(dataObj.text == "ok")
|
||||||
|
{
|
||||||
|
obj.checked = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
obj.checked = false;
|
||||||
|
}
|
||||||
|
if(dataObj.complete == 1) {
|
||||||
|
$("#exercise_submit_btn").html("提交");
|
||||||
|
} else {
|
||||||
|
$("#exercise_submit_btn").html("保存");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<input class="ur_radio" type="checkbox" onclick="click_<%= exercise_choice.id %>(this);return false;" <%= answer_be_selected?(exercise_choice,User.current) ? "checked":"" %> <%= @can_edit_excercise?"":"disabled=disabled" %> >
|
||||||
|
<%= convert_to_char((index+1).to_s)%> <%= exercise_choice.choice_text%>
|
||||||
|
</label>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<% end %>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div><!--多选题显示 end-->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
<div class="testStatus" id="single_question_list" style="display: <%=single_question_list.count > 0 ? "" : "none" %>">
|
||||||
|
<h3 class="fontGrey3">填空题</h3>
|
||||||
|
<% single_question_list.each_with_index do |exercise_question, list_index| %>
|
||||||
|
<div id="poll_questions_<%= exercise_question.id%>">
|
||||||
|
<div id="show_poll_questions_<%= exercise_question.id %>">
|
||||||
|
<div>
|
||||||
|
<div class="testEditTitle"> 第<%= list_index+1%>题:<%= exercise_question.question_title %> (<%= exercise_question.question_score %>分)
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<div>
|
||||||
|
<script>
|
||||||
|
function onblur_<%= exercise_question.id %>(obj)
|
||||||
|
{
|
||||||
|
$(window).unbind('beforeunload');
|
||||||
|
$.ajax({
|
||||||
|
type: "post",
|
||||||
|
url: "<%= commit_answer_exercise_path(exercise) %>",
|
||||||
|
data: {
|
||||||
|
exercise_question_id: <%= exercise_question.id %> ,
|
||||||
|
answer_text: obj.value
|
||||||
|
},
|
||||||
|
success: function (data) {
|
||||||
|
var dataObj = eval(data);
|
||||||
|
obj.value = dataObj.text;
|
||||||
|
if(dataObj.complete == 1) {
|
||||||
|
$("#exercise_submit_btn").html("提交");
|
||||||
|
} else {
|
||||||
|
$("#exercise_submit_btn").html("保存");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<input class="fillInput" placeholder="在此填入答案" type="text" value="<%= get_anwser_vote_text(exercise_question.id,User.current.id).html_safe %>" onblur="onblur_<%= exercise_question.id %>(this);" <%= @can_edit_excercise?"":"disabled=disabled" %>>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
<div class="ur_buttons">
|
||||||
|
<%= link_to "保存",commit_exercise_exercise_path(exercise),:id=>"exercise_submit_btn", :method => :post,:class => "ur_button_submit",:style => "margin-left:80px;",:format => 'js',:remote=>true %>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<!--contentbox end-->
|
||||||
|
</div>
|
||||||
|
<!--RSide end-->
|
||||||
|
</div>
|
@ -0,0 +1,37 @@
|
|||||||
|
<%= form_for('',
|
||||||
|
:html => { :multipart => true },
|
||||||
|
:url => {:controller => 'exercise',
|
||||||
|
:action => 'commit_exercise',
|
||||||
|
:id => exercise.id
|
||||||
|
},:remote=>true ) do |f| %>
|
||||||
|
<div class="ur_buttons">
|
||||||
|
<a class="ur_button_submit" onclick="poll_submit();"> 提交 </a>
|
||||||
|
<div class="polls_cha">
|
||||||
|
<%= f.check_box 'show_result', :value => exercise.show_result%>
|
||||||
|
<%= label_tag '_show_result', '允许学生查看测验结果' %>
|
||||||
|
<!--<input name="exercise[show_result]" value="<%#exercise.show_result %>" type="checkbox" checked="true">
|
||||||
|
<label for="">允许学生查看测验结果</label>-->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
function poll_submit() {
|
||||||
|
var question_form = $("form.new_exercise_question");
|
||||||
|
if($("#polls_head_edit").is(":visible")){
|
||||||
|
alert("请先保存测验标题及测验基本信息。");
|
||||||
|
} else if(question_form.length > 0) {
|
||||||
|
alert("请先保存正在编辑的题目。");
|
||||||
|
} else{
|
||||||
|
$('#ajax-modal').html('<%= escape_javascript(render :partial => 'exercise_submit_info', locals: { :exercise => exercise}) %>');
|
||||||
|
showModal('ajax-modal', '400px');
|
||||||
|
//$('#ajax-modal').css('height','120px');
|
||||||
|
$('#ajax-modal').siblings().remove();
|
||||||
|
$('#ajax-modal').before("<span style='float: right;cursor:pointer;'>" +
|
||||||
|
"<a href='javascript:' onclick='clickCanel();'><img src='/images/bid/close.png' width='26px' height='26px' /></a></span>");
|
||||||
|
$('#ajax-modal').parent().removeClass("alert_praise");
|
||||||
|
$('#ajax-modal').parent().css("top","").css("left","");
|
||||||
|
$('#ajax-modal').parent().addClass("popbox_polls");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
@ -0,0 +1,40 @@
|
|||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<script type="text/javascript">
|
||||||
|
function clickCanel(){hideModal("#popbox02");}
|
||||||
|
function exercise_submit(){
|
||||||
|
$("#exercise_submit>form")[0].submit();
|
||||||
|
hideModal("#popbox02");
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div id="popbox02">
|
||||||
|
<div class="upload_con">
|
||||||
|
<div class="upload_box">
|
||||||
|
<% current_score = get_current_score exercise %>
|
||||||
|
<% question_count = exercise.exercise_questions.count %>
|
||||||
|
<% mc_count = exercise.exercise_questions.where("question_type=1").count %>
|
||||||
|
<% mcq_count = exercise.exercise_questions.where("question_type=2").count %>
|
||||||
|
<% single_count = exercise.exercise_questions.where("question_type=3").count %>
|
||||||
|
<p class="f14">当前测验<%if question_count >0%>共有<%= question_count %>道题,其中<%end%><%if mc_count > 0%><%=mc_count %>道单选、<%end%><%if mcq_count > 0%><%=mcq_count %>道多选、<%end%><%if single_count > 0%><%=single_count %>道填空,<%end%>总分为<span class="c_red"><%=current_score %></span>分。
|
||||||
|
<br /><br />
|
||||||
|
<% if exercise.publish_time.nil? %>点击提交后测验将立即发布,<% end %>是否确定提交该测验?
|
||||||
|
</p>
|
||||||
|
<div class="polls_btn_box">
|
||||||
|
<a class="upload_btn" onclick="exercise_submit();">
|
||||||
|
确 定
|
||||||
|
</a>
|
||||||
|
<a class="upload_btn upload_btn_grey" onclick="clickCanel();">
|
||||||
|
取 消
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1,125 @@
|
|||||||
|
<script type="text/javascript">
|
||||||
|
$(function(){
|
||||||
|
$("#RSide").removeAttr("id");
|
||||||
|
$("#homework_page_right").css("min-height",$("#LSide").height()-30);
|
||||||
|
$("#Container").css("width","1000px");
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<div class="homepageRight mt0 ml10">
|
||||||
|
<div class="resources">
|
||||||
|
<div class="testStatus"><!--头部显示 start-->
|
||||||
|
<h1 class="ur_page_title" id="polls_name_h"><%= exercise.exercise_name%></h1>
|
||||||
|
<div class="fontGrey2">
|
||||||
|
<% unless exercise.publish_time.nil? %>
|
||||||
|
<span class="mr100">发布时间:<%=Time.parse(h(exercise.publish_time)).strftime("%Y-%m-%d %H:%M:%S") %></span>
|
||||||
|
<% end %>
|
||||||
|
<span class="mr100">截止时间:<%=Time.parse(h(exercise.end_time)).strftime("%Y-%m-%d %H:%M:%S") %></span>
|
||||||
|
<% if exercise.time != -1 %>
|
||||||
|
<span class="fr">测验时长:<%=exercise.time %>分钟</span>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
<div class="testDesEdit mt5"><%= exercise.exercise_description.nil? ? "" : exercise.exercise_description.html_safe%></div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</div>
|
||||||
|
<% mc_question_list = exercise.exercise_questions.where("question_type=1") %>
|
||||||
|
<% mcq_question_list = exercise.exercise_questions.where("question_type=2") %>
|
||||||
|
<% single_question_list = exercise.exercise_questions.where("question_type=3") %>
|
||||||
|
<div class="testStatus" id="mc_question_list" style="display: <%=mc_question_list.count > 0 ? "" : "none" %>">
|
||||||
|
<h3 class="fontGrey3">单选题</h3>
|
||||||
|
<% mc_question_list.each_with_index do |exercise_question, list_index| %>
|
||||||
|
<div id="poll_questions_<%= exercise_question.id%>">
|
||||||
|
<div id="show_poll_questions_<%= exercise_question.id %>">
|
||||||
|
<div>
|
||||||
|
<div class="testEditTitle"> 第<%= list_index+1%>题:<%= exercise_question.question_title %> (<%= exercise_question.question_score %>分)
|
||||||
|
<br />
|
||||||
|
标准答案:<%= convert_to_char(exercise_question.exercise_standard_answers.first.exercise_choice_id.to_s) %>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<div class="ur_inputs">
|
||||||
|
<table class="ur_table" style="width:675px;">
|
||||||
|
<tbody>
|
||||||
|
<% exercise_question.exercise_choices.reorder("choice_position").each_with_index do |exercise_choice,index| %>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label>
|
||||||
|
<input class="ur_radio" type="radio" name="<%= exercise_question %>" value="<%= exercise_choice.choice_text%>" >
|
||||||
|
<%= convert_to_char((index+1).to_s)%> <%= exercise_choice.choice_text%>
|
||||||
|
</label>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<% end %>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
<div class="testStatus" id="mcq_question_list" style="display: <%=mcq_question_list.count > 0 ? "" : "none" %>">
|
||||||
|
<h3 class="fontGrey3">多选题</h3>
|
||||||
|
<% mcq_question_list.each_with_index do |exercise_question, list_index| %>
|
||||||
|
<div id="poll_questions_<%= exercise_question.id%>">
|
||||||
|
<div id="show_poll_questions_<%= exercise_question.id %>">
|
||||||
|
<div>
|
||||||
|
<div class="testEditTitle"> 第<%= list_index+1%>题:<%= exercise_question.question_title %> (<%= exercise_question.question_score %>分)
|
||||||
|
<br />
|
||||||
|
标准答案:<%= convert_to_char(exercise_question.exercise_standard_answers.first.exercise_choice_id.to_s) %>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<div class="ur_inputs">
|
||||||
|
<table class="ur_table" style="width:675px;">
|
||||||
|
<tbody>
|
||||||
|
<% exercise_question.exercise_choices.reorder("choice_position").each_with_index do |exercise_choice,index| %>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label>
|
||||||
|
<input class="ur_radio" type="checkbox" name="<%= exercise_question %>" value="<%= exercise_choice.choice_text%>" >
|
||||||
|
<%= convert_to_char((index+1).to_s)%> <%= exercise_choice.choice_text%>
|
||||||
|
</label>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<% end %>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div><!--多选题显示 end-->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
<div class="testStatus" id="single_question_list" style="display: <%=single_question_list.count > 0 ? "" : "none" %>">
|
||||||
|
<h3 class="fontGrey3">填空题</h3>
|
||||||
|
<% single_question_list.each_with_index do |exercise_question, list_index| %>
|
||||||
|
<div id="poll_questions_<%= exercise_question.id%>">
|
||||||
|
<div id="show_poll_questions_<%= exercise_question.id %>">
|
||||||
|
<div>
|
||||||
|
<div class="testEditTitle"> 第<%= list_index+1%>题:<%= exercise_question.question_title %> (<%= exercise_question.question_score %>分)
|
||||||
|
<br />
|
||||||
|
标准答案:<%= convert_to_char(exercise_question.exercise_standard_answers.first.exercise_choice_id.to_s) if exercise_question.exercise_standard_answers.first%>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<div>
|
||||||
|
<% exercise_question.exercise_standard_answers.reorder("created_at").each_with_index do |exercise_choice,index| %>
|
||||||
|
候选答案:<%= exercise_choice.answer_text%><br />
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
<div class="ur_buttons">
|
||||||
|
<%= link_to "确定",exercise_index_path(:course_id => @course.id),:class => "ur_button_submit" %>
|
||||||
|
<% if exercise.exercise_status == 1 %>
|
||||||
|
<%= link_to l(:button_edit), edit_exercise_path(exercise.id), :class => "ur_button_submit", :style => "float:right"%>
|
||||||
|
<% else %>
|
||||||
|
<span class="ur_button_submit" style="float:right; background:#a3a3a3" title="测验已发布,不可再编辑">编辑</span>
|
||||||
|
<%#= link_to l(:button_edit), '', :class => "ur_button_submit", :style => "float:right; background:#a3a3a3"%>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<!--contentbox end-->
|
||||||
|
</div>
|
||||||
|
<!--RSide end-->
|
||||||
|
</div>
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue