diff --git a/.gitignore b/.gitignore
index bb4b68554..1b56839ee 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,39 +1,39 @@
-*.swp
-/.project
-/.idea
-/.bundle
-*.swp
-/config/database.yml
-/config/configuration.yml
-/config/additional_environment.rb
-/config/oneapm.yml
-/config/environments/production.rb
-
-
-/files/*
-/log/*
-/public/tmp/*
-/tmp/*
-/public/cache/*
-/config/newrelic.yml
-/public/images/avatars/*
-/db/schema.rb
-/Gemfile.lock
-/lib/plugins/acts_as_versioned/test/debug.log
-.rbenv-gemsets
-.DS_Store
-public/api_doc/
-/.metadata
-vendor/cache
-/files
-/public/images/avatars
-/public/files
-/tags
-/config/initializers/gitlab_config.rb
-1234567
-public/javascripts/wechat/node_modules/
-.ruby-version
-.access_token
-tmux*.log
-config/wechat.yml
-config/oneapm.yml
+*.swp
+/.project
+/.idea/*
+/.bundle
+*.swp
+/config/database.yml
+/config/configuration.yml
+/config/additional_environment.rb
+/config/oneapm.yml
+/config/environments/production.rb
+
+
+/files/*
+/log/*
+/public/tmp/*
+/tmp/*
+/public/cache/*
+/config/newrelic.yml
+/public/images/avatars/*
+/db/schema.rb
+/Gemfile.lock
+/lib/plugins/acts_as_versioned/test/debug.log
+.rbenv-gemsets
+.DS_Store
+public/api_doc/
+/.metadata
+vendor/cache
+/files
+/public/images/avatars
+/public/files
+/tags
+/config/initializers/gitlab_config.rb
+1234567
+public/javascripts/wechat/node_modules/
+.ruby-version
+.access_token
+tmux*.log
+config/wechat.yml
+config/oneapm.yml
diff --git a/app/controllers/boards_controller.rb b/app/controllers/boards_controller.rb
index 1c0fa35a4..87d68f3c4 100644
--- a/app/controllers/boards_controller.rb
+++ b/app/controllers/boards_controller.rb
@@ -21,7 +21,7 @@ class BoardsController < ApplicationController
before_filter :find_project_by_project_id, :find_board_if_available, :except => [:join_to_org_subfields]
before_filter :authorize, :except => [:new, :show, :create, :index, :join_to_org_subfields, :update_position, :update_name, :update_boards_position, :update_boards_name]
accept_rss_auth :index, :show
-
+
helper :sort
include SortHelper
@@ -146,7 +146,7 @@ class BoardsController < ApplicationController
if (@board)
@topic_count = @board.topics.count();
@topic_pages = 0 #(params[:page] ? params[:page].to_i + 1 : 0) *10
- @topics = @board.topics.reorder("#{Message.table_name}.sticky DESC, COALESCE(last_replies_messages.created_on, #{Message.table_name}.created_on) #{sort_type}").offset(@topic_pages).includes(:last_reply).preload(:author, {:last_reply => :author}).all();
+ @topics = @board.topics.reorder("#{Message.table_name}.sticky DESC, COALESCE(last_replies_messages.created_on, #{Message.table_name}.updated_on) #{sort_type}").offset(@topic_pages).includes(:last_reply).preload(:author, {:last_reply => :author}).all();
else
@board = @contest.boards.build
@board.name = " #{l(:label_board_contest) }"#self.name
@@ -156,7 +156,7 @@ class BoardsController < ApplicationController
if @board.save
@topic_count = @board.topics.count();
@topic_pages = 0 #(params[:page] ? params[:page].to_i + 1 : 0) *10
- @topics = @board.topics.reorder("#{Message.table_name}.sticky DESC, COALESCE(last_replies_messages.created_on, #{Message.table_name}.created_on) #{sort_type}").offset(@topic_pages).includes(:last_reply).preload(:author, {:last_reply => :author}).all();
+ @topics = @board.topics.reorder("#{Message.table_name}.sticky DESC, COALESCE(last_replies_messages.created_on, #{Message.table_name}.updated_on) #{sort_type}").offset(@topic_pages).includes(:last_reply).preload(:author, {:last_reply => :author}).all();
else
@topics = []
end
@@ -183,7 +183,7 @@ class BoardsController < ApplicationController
end
#分页
- @limit = 1
+ @limit = 10
@is_remote = true
@atta_count = @topics.count
@atta_pages = Paginator.new @atta_count, @limit, params['page'] || 1
@@ -370,16 +370,16 @@ class BoardsController < ApplicationController
end
def update_boards_name
- @board.update_attribute("name", params[:name])
- @board.update_attribute("description", params[:name])
+ @board.update_attribute("name", params[:name])
+ @board.update_attribute("description", params[:name])
- @course_board = @course.boards.where("parent_id is NULL").first
- @board = @course_board.children.order("position asc")
- @board_count = @board.count
+ @course_board = @course.boards.where("parent_id is NULL").first
+ @board = @course_board.children.order("position asc")
+ @board_count = @board.count
- respond_to do |format|
- format.js
- end
+ respond_to do |format|
+ format.js
+ end
end
def join_to_org_subfields
@@ -392,7 +392,7 @@ class BoardsController < ApplicationController
end
end
-private
+ private
def redirect_to_settings_in_projects
redirect_to settings_project_url(@project, :tab => 'boards')
end
diff --git a/app/controllers/challenges_controller.rb b/app/controllers/challenges_controller.rb
index 87fe18a96..20811cab7 100644
--- a/app/controllers/challenges_controller.rb
+++ b/app/controllers/challenges_controller.rb
@@ -14,7 +14,7 @@ class ChallengesController < ApplicationController
def new
# 顶部导航
- @st = params[:st]
+ @st = params[:st].to_i
@project_menu_type = 11
respond_to do |format|
format.html { render :action => 'new', :layout => 'base_shixun' }
@@ -29,17 +29,20 @@ class ChallengesController < ApplicationController
@challenge.position = challenge_count + 1
@challenge.shixun = @shixun
@challenge.user = User.current
- # @challenge.st = params[:st]
+ @challenge.st = params[:st].to_i
if @challenge.save!
- # 创建选项
- # params[:question].each do |test|
- # ChallengeQuestion.where(:option_name => option_name,:challenges => challenge_id, :positon => 1, :right_key => true)
- # end
+ if params[:st].to_i != 0
+ #创建选项
+ params[:question][:cnt].each_with_index do |test, index|
+ answer = params[:choice][:answer][index] == "0" ? false : true
+ ChallengeQuestion.create(:option_name => test, :challenge_id => @challenge.id, :position => index, :right_key => answer)
+ end
+ end
end
redirect_to edit_shixun_challenge_path(@challenge, :shixun_id => @shixun)
rescue Exception => e
flash[:error] = "#{e.message}"
- redirect_to new_shixun_challenge_path(:shixun_id => @shixun)
+ redirect_to new_shixun_challenge_path(:shixun_id => @shixun, :st => params[:st].to_i)
raise ActiveRecord::Rollback
end
end
@@ -103,6 +106,7 @@ class ChallengesController < ApplicationController
end
def edit
+ @st = @challenge.st
challenge_num = Challenge.where(:shixun_id => @shixun).count
challenge_pos = @challenge.position
if challenge_pos < challenge_num
@@ -120,39 +124,25 @@ class ChallengesController < ApplicationController
end
def update
- @challenge.update_attributes(params[:challenge])
- redirect_to edit_shixun_challenge_path(@challenge, :shixun_id => @shixun, :tab => params[:tab])
-=begin
- respond_to do |format|
ActiveRecord::Base.transaction do
@challenge.update_attributes(params[:challenge])
- begin
- @test_sets.delete_all unless @test_sets.blank?
- @challenge_tags.delete_all unless @challenge_tags.blank?
- if params[:test_set][:hidden].length > 0
- params[:test_set][:input].each_with_index do |input, index|
- unless (input[index] == params[:test_set][:output][index] && input[index].nil?)
- params[:test_set][:hidden][index].to_i == 0 ? open = 1 : open = 0
- TestSet.create(:challenge_id => @challenge.id, :input => input, :output => params[:test_set][:output][index], :is_public => open, :position => (index + 1))
- end
+ if (params[:tab] == "1" || params[:tab].nil?) && @challenge.st != 0
+ begin
+ @challenge.challenge_questions.delete_all
+ params[:question][:cnt].each_with_index do |test, index|
+ answer = params[:choice][:answer][index] == "0" ? false : true
+ ChallengeQuestion.create(:option_name => test, :challenge_id => @challenge.id, :position => index, :right_key => answer)
end
+ redirect_to edit_shixun_challenge_path(@challenge, :shixun_id => @shixun, :tab => params[:tab])
+ rescue Exception => e
+ flash[:error] = "#{e.message}"
+ format.html{redirect_to edit_shixun_challenge_path(@challenge, :shixun_id => @shixun)}
+ raise ActiveRecord::Rollback
end
- unless params[:knowledge].blank?
- params[:knowledge][:input].each do |input|
- ChallengeTag.create(:name => input, :challenge_id => @challenge.id)
- end
- end
- # 向jenkins端发送请求,构建公共测试用例
- add_shixun_modify_status(@shixun, 1)
- format.html {redirect_to shixun_challenge_path(@challenge, :shixun_id => @shixun), notice: '更新成功!'}
- rescue Exception => e
- flash[:error] = "#{e.message}"
- format.html{redirect_to edit_shixun_challenge_path(@challenge, :shixun_id => @shixun)}
- raise ActiveRecord::Rollback
+ else
+ redirect_to edit_shixun_challenge_path(@challenge, :shixun_id => @shixun, :tab => params[:tab])
end
end
- end
-=end
end
def update_evaluation
diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb
index 32fa30536..a0faf463a 100644
--- a/app/controllers/courses_controller.rb
+++ b/app/controllers/courses_controller.rb
@@ -1328,7 +1328,7 @@ class CoursesController < ApplicationController
# course_request_messages = CourseMessage.where("user_id =? and course_id =? and course_message_type =? and viewed =?", User.current.id, @course.id, 'CourseRequestDealResult', false)
# course_request_messages.update_all(:viewed => true)
- course_activities = @course.course_activities.where("course_act_type in ('HomeworkCommon', 'Attachment', 'Course')")
+ course_activities = @course.course_activities.where("course_act_type in ('HomeworkCommon', 'Attachment', 'Course', 'Message')")
@canShowRealName = User.current.member_of_course? @course
@page = params[:page] ? params[:page].to_i + 1 : 0
if params[:type].present?
diff --git a/app/controllers/games_controller.rb b/app/controllers/games_controller.rb
index b53d6979e..d08e976bf 100644
--- a/app/controllers/games_controller.rb
+++ b/app/controllers/games_controller.rb
@@ -4,7 +4,7 @@ class GamesController < ApplicationController
skip_before_filter :verify_authenticity_token, :only => [:file_update]
before_filter :find_myshixun, :only => [:index]
before_filter :find_game, :only => [:show, :game_build, :entry,:next_step, :outputs_show, :file_edit, :file_update,
- :game_status, :change_status, :answer, :minus_score, :refresh_game_list, :reset_original_code, :reset_new_code]
+ :game_status, :change_status, :answer, :minus_score, :refresh_game_list, :reset_original_code, :reset_new_code, :evaluating_choice]
before_filter :find_repository, :only => [:show, :entry, :file_edit, :file_update, :reset_original_code, :reset_new_code]
before_filter :allowd_manager
before_filter :allowd_view, :only => [:show]
@@ -26,6 +26,7 @@ class GamesController < ApplicationController
# @praise 判断是否点赞
# @tread 判断是否踩
# git_repository_url @myshixun, "Myshixun"
+ # @st 0 实践任务 1 多选任务 2 单选任务
def show
# 展示全部实训
if @game.status == 1
@@ -38,12 +39,15 @@ class GamesController < ApplicationController
@shixun = @myshixun.shixun
# @games_count = @games.count
@game_challenge = @game.challenge
+ @st = @game_challenge.st
@had_done = @game.had_done
@praise = PraiseTread.where("praise_tread_object_id=? and praise_tread_object_type=? and user_id=?", @game_challenge.id, @game_challenge.class.to_s, User.current.id).first
@tread = PraiseTread.where("praise_tread_object_id=? and praise_tread_object_type=? and user_id=?", @game_challenge.id, "ChallengeTread", User.current.id).first
@rev = @rev.nil? ? "master" : @rev
@type = params[:type]
challenge_path = @game_challenge.path
+ # 用户选项
+ @user_answer = @game.outputs.first.actual_output.split("") unless @st == 0 || @game.outputs.blank?
# 默认打开文件
logger.info("repository id is #{@repository.try(:id)}, repository's shixun_id =#{@repository.try(:myshixun_id)} shixun_id =#{@repository.try(:shixun_id)}, project_id => #{@repository.try(:project_id)}")
# 验证challenge文件名的合法性
@@ -262,6 +266,36 @@ class GamesController < ApplicationController
had_done: had_done}
end
+ # 选择题评测(选择题不需要重新评测)
+ def evaluating_choice
+ @game_challenge = @game.challenge
+ user_answer = params[:answer]
+ correct = true
+ if !user_answer.blank?
+ if user_answer.split("").count != @game_challenge.challenge_questions.where(:right_key => true).count
+ correct = false
+ else
+ user_answer.split("").each do |answer|
+ question = @game_challenge.challenge_questions.where(:position => answer.to_i).first
+ unless question.right_key
+ correct = false
+ break
+ end
+ end
+ end
+ else
+ correct = false
+ end
+ @game.update_attributes(:status => 2, :end_time => Time.now)
+ had_done = @game.had_done
+ User.current.update_attributes(:grade => (User.current.grade + @game.challenge.score), :experience => (User.current.experience + @game.challenge.score)) if correct
+ if @game.outputs.blank?
+ Output.create(:game_id => @game.id, :actual_output => user_answer, :result => correct)
+ end
+ render :json => {correct: correct, had_done: had_done, :grade => User.current.grade}
+ end
+
+
def change_status
@game.update_attribute(:status, 0)
outputs = @game.outputs
diff --git a/app/controllers/managements_controller.rb b/app/controllers/managements_controller.rb
index 400fad766..f0cb3aacd 100644
--- a/app/controllers/managements_controller.rb
+++ b/app/controllers/managements_controller.rb
@@ -1,393 +1,755 @@
-# encoding: utf-8
-class ManagementsController < ApplicationController
- before_filter :require_admin
- layout 'base_management'
- include ManagementsHelper
- include SortHelper
- include UsersHelper
- include ApplicationHelper
-
- # 0 全部;1 活动的; 2 已注册; 3 锁定
- def users
- status = params[:user_status].nil? ? 0 : params[:user_status].to_i
- @us_order = params[:us_order].blank? ? "desc" : params[:us_order] # 排序
- @order_key = params[:order_key].blank? ? "created_on" : params[:order_key] # 排序关键字
- condition = (params[:research_condition].nil? || params[:research_condition] == "name") ? "concat(lastname, firstname)" : params[:research_condition]
- if 0 == status
- if params[:research_condition] == "phone" && params[:research_contents].blank?
- @users = User.order("#{@order_key} #{@us_order}").all
- else
- @users = User.where("#{condition} like '%#{params[:research_contents]}%'").order("#{@order_key} #{@us_order}").all
- end
- else
- if params[:research_condition] == "phone" && params[:research_contents].blank?
- @users = User.where(:status => status).order("#{@order_key} #{@us_order}").all
- else
- @users = User.where("status = #{status} and #{condition} like '%#{params[:research_contents]}%'").order("#{@order_key} #{@us_order}").all
- end
- end
-
- @users_count = @users.count
- @limit = 20
- @is_remote = true
- @users_pages = Paginator.new @users_count, @limit, params['page'] || 1
- @offset ||= @users_pages.offset
- @users = paginateHelper @users, @limit
-
- respond_to do |format|
- format.js
- format.html
- end
- end
-
- def shixuns
- @menu_type = 3
- sx_status = params[:status].blank? ? [0, 1, 2, 3] : params[:status].to_i # 搜索实训的状态
- keyword = params[:keyword].blank? ? "u_name" : params[:keyword] # 根据姓名/实训名搜索
- search = params[:search] # 搜索的字
- @sx_order = params[:sx_order].blank? ? "desc" : params[:sx_order] # 排序
- if "u_name" == keyword
- # 如果用户搜索为空,不用遍历user表,直接查找所有实训, 有搜索时才查找user
- if search.blank?
- @shixuns = Shixun.where(:status => sx_status).order("created_at #{@sx_order}")
- else
- user_id = User.where("concat(lastname, firstname) like '%#{search}%'")
- @shixuns = Shixun.where(:user_id => user_id, :status => sx_status).order("created_at #{@sx_order}")
- end
- else
- @shixuns = Shixun.where("name like '%#{search}%'").where(:status => sx_status).order("created_at #{@sx_order}")
- end
- @edit_sx_num = Shixun.where(:status => 0).count
- @audit_sx_num = Shixun.where(:status => 1).count
- @publish_sx_num =Shixun.where(:status => 2).count
- @close_sx_num = Shixun.where(:status => 3).count
-
- @shixuns_count = @shixuns.count
- limit = 20
- @shixuns_pages = Paginator.new @shixuns_count, limit, params['page'] || 1
- @offset ||= @shixuns_pages.offset
- @shixuns = paginateHelper @shixuns, limit
- respond_to do |format|
- format.js
- format.html
- end
- end
-
- # 已发布的实训
- def publish_shixuns
- @menu_type = 3
- @sx_order = params[:sx_order].blank? ? "desc" : params[:sx_order] # 排序
- search = params[:search] # 搜索字
- keyword = params[:keyword].blank? ? "u_name" : params[:keyword] # 根据姓名/实训名搜索
- close = params[:close] # 关闭实训,参数是实训的Id
- unless close.blank?
- Shixun.find(close).update_attribute(:status, 3)
- end
- if "u_name" == keyword
- # 如果用户搜索为空,不用遍历user表,直接查找所有实训, 有搜索时才查找user
- if search.blank?
- @shixuns = Shixun.where(:status => 2).order("created_at #{@sx_order}")
- else
- user_id = User.where("concat(lastname, firstname) like '%#{search}%'")
- @shixuns = Shixun.where(:user_id => user_id, :status => 2).order("created_at #{@sx_order}")
- end
- else
- @shixuns = Shixun.where("name like '%#{search}%'").where(:status => 2).order("created_at #{@sx_order}")
- end
- @shixuns_count = @shixuns.count
- limit = 20
- @shixuns_pages = Paginator.new @shixuns_count, limit, params['page'] || 1
- @offset ||= @shixuns_pages.offset
- @shixuns = paginateHelper @shixuns, limit
-
- respond_to do |format|
- format.js
- format.html
- end
- end
-
- # 已关闭的实训
- def close_shixuns
- @menu_type = 3
- @sx_order = params[:sx_order].blank? ? "desc" : params[:sx_order] # 排序
- search = params[:search] # 搜索字
- keyword = params[:keyword].blank? ? "u_name" : params[:keyword] # 根据姓名/实训名搜索
- reopen = params[:reopen] # 从新开启实训,参数是实训的Id
-
- unless reopen.blank?
- Shixun.find(reopen).update_attribute(:status, 2)
- end
- if "u_name" == keyword
- # 如果用户搜索为空,不用遍历user表,直接查找所有实训, 有搜索时才查找user
- if search.blank?
- @shixuns = Shixun.where(:status => 3).order("updated_at #{@sx_order}")
- else
- user_id = User.where("concat(lastname, firstname) like '%#{search}%'")
- @shixuns = Shixun.where(:user_id => user_id, :status => 3).order("updated_at #{@sx_order}")
- end
- else
- @shixuns = Shixun.where("name like '%#{search}%'").where(:status => 3).order("updated_at #{@sx_order}")
- end
- @shixuns_count = @shixuns.count
- limit = 20
- @shixuns_pages = Paginator.new @shixuns_count, limit, params['page'] || 1
- @offset ||= @shixuns_pages.offset
- @shixuns = paginateHelper @shixuns, limit
-
- respond_to do |format|
- format.js
- format.html
- end
- end
-
- def users_trial
- @menu_type = 6
- @users = User.where(:status => 1).order("created_on desc").all
- @users_count = @users.count
- @limit = 20
- @is_remote = true
- @users_pages = Paginator.new @users_count, @limit, params['page'] || 1
- @offset ||= @users_pages.offset
- @users = paginateHelper @users, @limit
-
- end
-
- def search_user
-
-=begin
- auth = ApplyUserAuthentication.where(:status => params[:authentication])
- auth_id = auth.blank? ? User.where(:status => 1).id : "(" + auth.map{|a| a.user_id }.join(",") + ")"
-=end
-
- if params[:member_ids] && params[:trial_whether] == "trial_agree"
- params[:member_ids].each do |member|
- aUser = ApplyAction.where(:user_id => member, :container_type => "TrialAuthorization")
- if aUser.blank?
- ApplyAction.create(:user_id => member, :container_type => "TrialAuthorization", :status => 1)
- else
- aUser.update_all(:status => 1)
- end
- end
- elsif params[:member_ids] && params[:trial_whether] == "trial_cancel"
- ApplyAction.where(:user_id => params[:member_ids], :container_type => "TrialAuthorization").update_all(:status => 2)
- end
-
- if params[:member_ids] && (params[:occupation] == "occupation_agree" || params[:realname] == "realname_agree")
- User.where(:id => params[:member_ids]).update_all(:authentication => true)
- elsif params[:member_ids] && (params[:occupation] == "occupation_agree" || params[:realname] == "realname_cancel")
- User.where(:id => params[:member_ids]).update_all(:authentication => false)
- end
-
- if params[:trial] == "-1"
- apply = ApplyAction.where(:container_type => "TrialAuthorization")
- apply_id = apply.blank? ? -1 : "(" + apply.map{|a| a.user_id}.join(",") + ")"
- apply_user_id = User.where("id not in #{apply_id} and status = 1").all
- apply_user_id = apply_user_id.blank? ? [-1] : apply_user_id.map{|a| a.id}.split(",")[0]
- elsif params[:trial] == "-2"
- apply_user_id = User.where(:status => 1).all
- apply_user_id = apply_user_id.blank? ? [-1] : apply_user_id.map{|a| a.id}.split(",")[0]
- else
- apply = ApplyAction.where(:status => params[:trial])
- apply_user_id = apply.blank? ? [-1] : apply.map{|a| a.user_id}.split(",")[0]
- end
-
- if params[:school] == ""
- s_user_id = User.where(:status => 1).all
- s_user_id = s_user_id.blank? ? [-1] : s_user_id.map{|s| s.id}.split(",")[0]
- else
- school = School.where("name like '%#{params[:school]}%'")
- school_id = school.blank? ? -1 : school.map{|s| s.id }.split(",")[0]
- usr = UserExtensions.where(:school_id => school_id)
- s_user_id = usr.blank? ? [-1] : usr.map{|u| u.user_id}.split(",")[0]
- end
-
- if params[:department] == ""
- d_user_id = User.where(:status => 1).all
- d_user_id = d_user_id.blank? ? [-1] : d_user_id.map{|d| d.id}.split(",")[0]
- else
- department = Department.where("name like '%#{params[:department]}%'").all
- dep_id = department.blank? ? -1 : department.map{|d| d.id}.split(",")
- usr = UserExtensions.where(:department_id => dep_id)
- d_user_id = usr.blank? ? [-1] : usr.map{|u| u.user_id}.split(",")[0]
- end
-
- user_id = s_user_id & d_user_id & apply_user_id
-
- if params[:research_condition] == "name"
- @users = User.where(:id => user_id).where("concat(lastname, firstname) like '%#{params[:research_contents]}%'").order("created_on desc")
- elsif params[:research_condition] == "email"
- @users = User.where(:id => user_id).where("mail like '%#{params[:research_contents]}%'").order("created_on desc")
- elsif params[:research_condition] == "phone"
- if params[:research_contents].blank?
- @users = User.where(:id => user_id).order("created_on desc")
- else
- @users = User.where(:id => user_id).where("phone like '%#{params[:research_contents]}%'").order("created_on desc")
- end
-
- end
-
- @users_count = @users.count
- @limit = 20
- @is_remote = true
- @users_pages = Paginator.new @users_count, @limit, params['page'] || 1
- @offset ||= @users_pages.offset
- @users = paginateHelper @users, @limit
-
- respond_to do |format|
- format.js
- end
- end
-
- def update_webssh
- webssh = params[:status] == "true" ? true : false
- @shixuns = Shixun.find(params[:shixun_id])
- @shixuns.update_column(:webssh, webssh)
- respond_to do |format|
- format.js
- end
- end
-
- def affirm_cancel_auth
- user_id = params[:users]
- end
-
-
- def trial_authorization
- @menu_type = 9
- search = params[:search]
- @status = trial_authorization_status(params[:status])
- # @status = (params[:status].blank? || params[:status] == "0") ? 0 : [1,2]
- if search.blank?
- @authorizations = ApplyAction.where(:container_type => "TrialAuthorization", :status => @status).includes(:user)
- else
- user_id = User.find_by_sql("select id from users where concat(lastname,firstname) like '%#{search}%'")
- @authorizations = ApplyAction.where(:container_type => "TrialAuthorization", :status => @status, :user_id => user_id).includes(:user)
- end
-
- @autu_count = @authorizations.count
- @limit = 15
- @is_remote = true
- @autu_pages = Paginator.new @autu_count, @limit, params['page'] || 1
- @offset ||= @autu_pages.offset
- @authorizations = paginateHelper @authorizations, @limit
-
- end
-
- # 批量授权
- def batch_authorization
-
- end
-
- # params[:type] 1:拒绝 0:同意
- # authentication 会有一个初始值,不同的值代表不同的权限
- # REDO: 后面权限改了后,一并要改
- def trial_authorization_operation
- apply_action = ApplyAction.find(params[:apply_id])
- type = params[:type]
- search = params[:search]
- if type == "0"
- authentication_user = AuthenticationsUsers.where(:user_id => apply_action.user_id).first
- if authentication_user.blank?
- AuthenticationsUsers.create(:user_id => apply_action.user_id, :authentication_id => 1)
- end
- end
- apply_action.update_attributes(:status => (params[:type] == "1" ? 2 : 1), :reason => params[:reject_reason], :dealer_id => User.current.id)
- user_id = User.find_by_sql("select id from users where concat(lastname,firstname) like '%#{search}%'")
- @authorizations = ApplyAction.where(:container_type => "TrialAuthorization", :status => 0, :user_id => user_id).includes(:user)
- @autu_count = @authorizations.count
- @limit = 15
- @is_remote = true
- @autu_pages = Paginator.new @autu_count, @limit, params['page'] || 1
- @offset ||= @autu_pages.offset
- @authorizations = paginateHelper @authorizations, @limit
- respond_to do |format|
- format.js
- end
- end
-
- def index
-
- end
-
- # copy from admin
- def identity_authentication
- @menu_type = 9
- @type = trial_authorization_status(params[:type])
- type = params[:type] || 0 # 存在type 就用type 没有就为 0
- user_id = User.find_by_sql("select id from users where concat(lastname,firstname) like '%#{params[:name]}%'")
- @unapproved_user = ApplyUserAuthentication.where(:status => @type, :user_id => user_id).order("updated_at desc")
- respond_to do |format|
- format.html
- format.js
- end
- end
-
- # 拒绝身份认证
- # copy from admin
- def reject_authentication
- apply_user = ApplyUserAuthentication.find(params[:apply_id])
- reason = apply_user.update_attributes(:status => 2, :remarks => params[:reject_reason])
- render :json => {success: reason}
- end
-
- # 统一身份认证
- # copy from admin
- def agree_authentication
- apply_user = ApplyUserAuthentication.find(params[:apply_id])
- user = User.find(apply_user.user_id)
- apply_user.update_attribute(:status, 1)
- user.update_attribute(:authentication, true)
- @unapproved_user = ApplyUserAuthentication.where(:status => 0).order("updated_at desc")
- respond_to do |format|
- format.js
- end
- end
-
- def shixun_authorization
- @type = trial_authorization_status params[:type]
- @authorizations = ApplyAction.where(:container_type => "ApplyShixun", :status => @type).order("created_at desc")
- search = params[:search]
- unless search.blank?
- @authorizations = @authorizations.where(:container_id => Shixun.where(:id => @authorizations.map(&:container_id)).where("name like '%#{search}%'").map(&:id)).order("created_at desc")
- end
-
- @authorizations_count = @authorizations.count
- @limit = 15
- @is_remote = true
- @authorizations_pages = Paginator.new @authorizations_count, @limit, params['page'] || 1
- @offset ||= @authorizations_pages.offset
- @authorizations = paginateHelper @authorizations, @limit
- respond_to do |format|
- format.js
- format.html
- end
- end
-
- def deal_shixun_authorization
- apply_action = ApplyAction.find(params[:apply_id])
- type = params[:type].to_i
- shixun = Shixun.find apply_action.container_id
- if type == 0
- shixun.update_column('status', 0)
- apply_action.update_attributes(:status => 2, :reason => params[:reject_reason], :dealer_id => User.current.id)
- notes = "您所在团队提交的项目实训发布申请:#{shixun.name},审核未通过。
原因:#{params[:reject_reason]}"
- shixun.shixun_members.each do |member|
- JournalsForMessage.create(:jour_id => member.user_id, :jour_type => 'Principal', :user_id => User.current.id, :notes => notes, :private => 1, :reply_id => 0)
- end
- else
- shixun.update_column('status', 2)
- apply_action.update_attributes(:status => 1, :dealer_id => User.current.id)
- shixun_modify_status_without_publish shixun, 1
- end
- @authorizations = ApplyAction.where(:container_type => "ApplyShixun", :status => 0)
- @authorizations_count = @authorizations.count
- @limit = 15
- @is_remote = true
- @authorizations_pages = Paginator.new @authorizations_count, @limit, params['page'] || 1
- @offset ||= @authorizations_pages.offset
- @authorizations = paginateHelper @authorizations, @limit
- respond_to do |format|
- format.js
- end
- end
-end
+# encoding: utf-8
+class ManagementsController < ApplicationController
+ before_filter :require_admin
+ layout 'base_management'
+ include ManagementsHelper
+ include SortHelper
+ include UsersHelper
+ include ApplicationHelper
+ # 专业列表
+ def profession
+ @syllabus=Syllabus.where("0=0")
+ @menu_type=11
+ @sub_type=1
+ major_level_option=params[:major_level_option]
+ discipline_category_option=params[:discipline_category_option]
+ first_level_discipline_option=params[:first_level_discipline_option]
+ if major_level_option!='0'
+ @syllabus=@syllabus.where(:major_level=>major_level_option)
+ else
+ @syllabus=@syllabus
+ end
+
+ if discipline_category_option !=nil
+ @syllabus=@syllabus.where(:discipline_category_id=>discipline_category_option)
+ end
+
+ if first_level_discipline_option!=nil
+ @syllabus=@syllabus.where(:first_level_discipline_id=>first_level_discipline_option)
+ end
+ @syllabus_count = @syllabus.count
+ limit = 20
+ @is_remote = true
+ @syllabus_pages = Paginator.new @syllabus_count, limit, params['page'] || 1
+ @offset ||= @syllabus_pages.offset
+ @syllabus = paginateHelper @syllabus, limit
+
+ respond_to do |format|
+ format.js
+ format.html
+ end
+
+ end
+
+ # 实训适用课程
+ def applicable_course
+ @majorcourse=MajorCourse.where("0=0")
+
+ end
+ # 单位部门列表
+ def departments
+ @menu_type = 6
+ @sub_type = 2
+ @department =Department.where("0=0")
+ search=params[:search]
+ if search.blank?
+ @department = @department
+ else
+ @department = @department.where("name like '%#{search}%'")
+ end
+ @department_count =@department.count
+ limit = 20
+ @is_remote = true
+ @department_pages = Paginator.new @department_count, limit, params['page'] || 1
+ @offset ||=@department_pages.offset
+ @department = paginateHelper @department, limit
+ respond_to do |format|
+ format.js
+ format.html
+ end
+
+ end
+ # 单位列表
+ def departments_part
+ @menu_type = 6
+ @sub_type = 1
+ @schools = School.where("0=0")
+ search=params[:search]
+ if search.blank?
+ @schools = @schools
+ else
+ @schools = @schools.where("name like '%#{search}%'")
+ end
+ @schools_count = @schools.count
+ limit = 20
+ @is_remote = true
+ @schools_pages = Paginator.new @schools_count, limit, params['page'] || 1
+ @offset ||= @schools_pages.offset
+ @schools= paginateHelper @schools, limit
+
+ respond_to do |format|
+ format.js
+ format.html
+ end
+ end
+
+ # 部门审核
+ def depart
+ @menu_type = 10
+ @sub_type = 3
+ search = params[:search]
+ @apply_status = ApplyAddDepartment.where("0=0")
+ if search.blank?
+ @apply_status = @apply_status.where("0=0")
+ else
+ @apply_status= @apply_status.where("name like '%#{search}%'")
+ end
+ @apply_status_count = @apply_status.count
+ limit = 20
+ @is_remote = true
+ @apply_status_pages = Paginator.new @apply_status_count, limit, params['page'] || 1
+ @offset ||=@apply_status_pages.offset
+ @apply_status = paginateHelper @apply_status, limit
+ respond_to do |format|
+ format.js
+ format.html
+ end
+ end
+
+ # 单位审批
+ def unit
+ @menu_type = 10
+ @sub_type = 4
+ search = params[:search]
+ @apply_status = ApplyAddSchools.where("0=0")
+ if search.blank?
+ @apply_status = @apply_status.where("0=0")
+ else
+ @apply_status= @apply_status.where("name like '%#{search}%'")
+ end
+ @apply_status_count = @apply_status.count
+ limit = 20
+ @is_remote = true
+ @apply_status_pages = Paginator.new @apply_status_count, limit, params['page'] || 1
+ @offset ||= @apply_status_pages.offset
+ @apply_status = paginateHelper @apply_status, limit
+
+ respond_to do |format|
+ format.js
+ format.html
+ end
+ end
+
+ # 课堂列表
+ def classroom
+ @menu_type = 2
+ @sub_type = 1
+ @syllabus = Syllabus.where("0=0")
+
+ @sx_order = params[:sx_order].blank? ? "desc" : params[:sx_order]
+ unless params[:school_id] || params[:search] || params[:keyword] || params[:status]
+ user_exs=UserExtensions.where(:user_id=> @syllabus.map(&:user_id))
+ @schools = School.where(:id =>user_exs.map(&:school_id))
+ end
+
+ major_level_option=params[:major_level_option]
+ discipline_category_option=params[:discipline_category_option]
+ first_level_discipline_option=params[:first_level_discipline_option]
+ syllabus_major_option=params[:syllabus_major_option]
+ keyword=params[:keyword]
+ search=params[:search]
+ if major_level_option!='0'
+ @syllabus=@syllabus.where(:major_level=>major_level_option)
+ else
+ @syllabus=@syllabus
+ end
+
+ if discipline_category_option !=nil
+ @syllabus=@syllabus.where(:discipline_category_id=>discipline_category_option)
+ end
+
+ if first_level_discipline_option!=nil
+ @syllabus=@syllabus.where(:first_level_discipline_id=>first_level_discipline_option)
+ end
+
+ if syllabus_major_option!=nil
+ @syllabus=@syllabus.where(:major_id=>syllabus_major_option)
+ end
+
+ if params[:school_id] && params[:school_id] != '0'
+ @syllabus = Syllabus.includes(:user => {:user_extensions => []}).where("user_extensions.school_id = #{params[:school_id]}")
+ else
+ @syllabus = @syllabus.where("0=0")
+ end
+
+ if search.blank?
+ @syllabus = @syllabus
+ else
+ if "u_name" == keyword
+ user_id = User.where("concat(lastname, firstname) like '%#{search}%'")
+ @syllabus = @syllabus.includes(:user).where("concat(users.lastname, users.firstname) like '%#{search}%'")
+ else
+ @syllabus= @syllabus.where("user_id like '%#{search}%'")
+ end
+ end
+ @syllabus_count = @syllabus.count
+ limit = 20
+ @is_remote = true
+ @syllabus_pages = Paginator.new @syllabus_count, limit, params['page'] || 1
+ @offset ||= @syllabus_pages.offset
+ @syllabus = paginateHelper @syllabus, limit
+ respond_to do |format|
+ format.html
+ format.js
+ end
+ end
+
+ # 班级列表
+ def classroom_classment
+ @menu_type = 2
+ @sub_type = 2
+ @sx_order = params[:sx_order].blank? ? "desc" : params[:sx_order]
+ @courses = Course.where("0=0")
+ # @courses = @courses.select("courses.*,(SELECT MAX(updated_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS updatetime").order("updatetime desc")
+ @timing=Course.where(:is_end=>false).count
+ @end=Course.where(:is_end=>true).count
+ unless params[:school_id] || params[:search] || params[:keyword] || params[:status]
+ user_exs=UserExtensions.where(:school_id=> @courses.map(&:school_id))
+ @schools = School.where(:id =>user_exs.map(&:school_id))
+ end
+ search = params[:search] # 搜索字
+ keyword = params[:keyword].blank? ? "u_name" : params[:keyword] # 根据姓名/课程名搜索
+ status = params[:status].to_i
+ if params[:school_id] && params[:school_id] != '0'
+ @courses =Course.joins("join users u on courses.tea_id = u.id").joins("join user_extensions ue on u.id = ue.user_id").where("ue.school_id = #{params[:school_id]}").order("created_at #{@sx_order}")
+ else
+ @courses = Course.where("0=0").order("created_at #{@sx_order}")
+ end
+ if params[:status] && params[:status]!=''
+ @courses =@courses.where(:is_end =>status).order("created_at #{@sx_order}")
+ end
+ if "u_name" == keyword
+ if search.blank?
+ @courses = @courses.order("created_at #{@sx_order}")
+ else
+ user_id = User.where("concat(lastname, firstname) like '%#{search}%'")
+ @courses = @courses.joins("join users u on courses.tea_id = u.id").where("concat(u.lastname, u.firstname) like '%#{search}%'").order("created_at #{@sx_order}")
+ end
+ else
+ @courses= @courses.where("name like '%#{search}%'").order("created_at #{@sx_order}")
+ end
+ @courses = @courses.select("courses.*,(SELECT MAX(updated_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS updatetime").reorder("updatetime desc")
+ @courses_count = @courses.count
+ limit = 20
+ @is_remote = true
+ @courses_pages = Paginator.new @courses_count, limit, params['page'] || 1
+ @offset ||= @courses_pages.offset
+ @courses = paginateHelper @courses, limit
+ respond_to do |format|
+ format.js
+ format.html
+ end
+ end
+
+ # 课程实训
+ def class_shixuns
+ @menu_type = 4
+ @sub_type = 1
+ @edit_class_sx_num=Subject.where(:status => 0).count
+ @audit_class_sx_num=Subject.where(:status => 1).count
+ @publish_class_sx_num=Subject.where(:status => 2).count
+ search = params[:search] # 搜索字
+ keyword = params[:keyword].blank? ? "u_name" : params[:keyword] # 根据姓名/课程名搜索
+ status = params[:status].to_i
+ if params[:school_id] && params[:school_id] != '0'
+ @c_shixuns = Subject.includes(:user => {:user_extensions => []}).where("user_extensions.school_id = #{params[:school_id]}")
+ else
+ @c_shixuns = Subject.where("0=0")
+ end
+ if params[:status] && params[:status]!=''
+ @c_shixuns= @c_shixuns.where(:status =>status)
+ end
+ if search.blank?
+ @c_shixuns = @c_shixuns
+ else
+ if "u_name" == keyword
+ user_id = User.where("concat(lastname, firstname) like '%#{search}%'")
+ @c_shixuns = @c_shixuns.includes(:user).where("concat(users.lastname, users.firstname) like '%#{search}%'")
+ else
+ @c_shixuns= @c_shixuns.where("name like '%#{search}%'")
+ end
+ end
+ @c_shixuns = @c_shixuns.reorder("created_at desc")
+ unless params[:school_id] || params[:search] || params[:keyword] || params[:status]
+ user_exs = UserExtensions.where(:user_id => @c_shixuns.map(&:user_id))
+ @schools = School.where(:id => user_exs.map(&:school_id))
+ end
+ respond_to do |format|
+ format.js
+ format.html
+ end
+ end
+
+ # 已发布课程实训
+ def class_publish_shixuns
+ @menu_type = 4
+ @sub_type = 2
+ search = params[:search] # 搜索字
+ keyword = params[:keyword].blank? ? "u_name" : params[:keyword] # 根据姓名/课程名搜索
+ if params[:school_id] && params[:school_id] != '0'
+ @c_shixuns = Subject.includes(:user => {:user_extensions => []}).where("subjects.status = 2 and user_extensions.school_id = #{params[:school_id]}")
+ else
+ @c_shixuns = Subject.where(:status => 2)
+ end
+ if search.blank?
+ @c_shixuns = @c_shixuns
+ else
+ if "u_name" == keyword
+ # 如果用户搜索为空,不用遍历user表,直接查找所有实训, 有搜索时才查找user
+ user_id = User.where("concat(lastname, firstname) like '%#{search}%'")
+ @c_shixuns = @c_shixuns.includes(:user).where("concat(users.lastname, users.firstname) like '%#{search}%'")
+ else
+ @c_shixuns= @c_shixuns.where("name like '%#{search}%'")
+ end
+ end
+ unless params[:school_id] || params[:search] || params[:keyword]
+ user_exs = UserExtensions.where(:user_id => @c_shixuns.map(&:user_id))
+ @schools = School.where(:id => user_exs.map(&:school_id))
+ end
+ respond_to do |format|
+ format.js
+ format.html
+ end
+ end
+
+ # 0 全部;1 活动的; 2 已注册; 3 锁定
+ def users
+ @menu_type =7
+ @sub_type = 1
+ status = params[:user_status].nil? ? 0 : params[:user_status].to_i
+ @us_order = params[:us_order].blank? ? "desc" : params[:us_order] # 排序
+ @order_key = params[:order_key].blank? ? "created_on" : params[:order_key] # 排序关键字
+ condition = (params[:research_condition].nil? || params[:research_condition] == "name") ? "concat(lastname, firstname)" : params[:research_condition]
+ if 0 == status
+ if params[:research_condition] == "phone" && params[:research_contents].blank?
+ @users = User.order("#{@order_key} #{@us_order}").all
+ else
+ @users = User.where("#{condition} like '%#{params[:research_contents]}%'").order("#{@order_key} #{@us_order}").all
+ end
+ else
+ if params[:research_condition] == "phone" && params[:research_contents].blank?
+ @users = User.where(:status => status).order("#{@order_key} #{@us_order}").all
+ else
+ @users = User.where("status = #{status} and #{condition} like '%#{params[:research_contents]}%'").order("#{@order_key} #{@us_order}").all
+ end
+ end
+ @users_count = @users.count
+ @limit = 20
+ @is_remote = true
+ @users_pages = Paginator.new @users_count, @limit, params['page'] || 1
+ @offset ||= @users_pages.offset
+ @users = paginateHelper @users, @limit
+ respond_to do |format|
+ format.js
+ format.html
+ end
+ end
+
+ def shixuns
+ @menu_type = 3
+ @sub_type = 1
+ sx_status = params[:status].blank? ? [0, 1, 2, 3] : params[:status].to_i # 搜索实训的状态
+ keyword = params[:keyword].blank? ? "u_name" : params[:keyword] # 根据姓名/实训名搜索
+ search = params[:search] # 搜索的字
+ @sx_order = params[:sx_order].blank? ? "desc" : params[:sx_order] # 排序
+ if "u_name" == keyword
+ # 如果用户搜索为空,不用遍历user表,直接查找所有实训, 有搜索时才查找user
+ if search.blank?
+ @shixuns = Shixun.where(:status => sx_status).order("created_at #{@sx_order}")
+ else
+ user_id = User.where("concat(lastname, firstname) like '%#{search}%'")
+ @shixuns = Shixun.where(:user_id => user_id, :status => sx_status).order("created_at #{@sx_order}")
+ end
+ else
+ @shixuns = Shixun.where("name like '%#{search}%'").where(:status => sx_status).order("created_at #{@sx_order}")
+ end
+ @edit_sx_num = Shixun.where(:status => 0).count
+ @audit_sx_num = Shixun.where(:status => 1).count
+ @publish_sx_num =Shixun.where(:status => 2).count
+ @close_sx_num = Shixun.where(:status => 3).count
+ @shixuns_count = @shixuns.count
+ limit = 20
+ @shixuns_pages = Paginator.new @shixuns_count, limit, params['page'] || 1
+ @offset ||= @shixuns_pages.offset
+ @shixuns = paginateHelper @shixuns, limit
+ respond_to do |format|
+ format.js
+ format.html
+ end
+ end
+
+ # 已发布的实训
+ def publish_shixuns
+ @menu_type = 3
+ @sub_type = 2
+ @sx_order = params[:sx_order].blank? ? "desc" : params[:sx_order] # 排序
+ search = params[:search] # 搜索字
+ keyword = params[:keyword].blank? ? "u_name" : params[:keyword] # 根据姓名/实训名搜索
+ close = params[:close] # 关闭实训,参数是实训的Id
+ unless close.blank?
+ Shixun.find(close).update_attribute(:status, 3)
+ end
+ if "u_name" == keyword
+ # 如果用户搜索为空,不用遍历user表,直接查找所有实训, 有搜索时才查找user
+ if search.blank?
+ @shixuns = Shixun.where(:status => 2).order("created_at #{@sx_order}")
+ else
+ user_id = User.where("concat(lastname, firstname) like '%#{search}%'")
+ @shixuns = Shixun.where(:user_id => user_id, :status => 2).order("created_at #{@sx_order}")
+ end
+ else
+ @shixuns = Shixun.where("name like '%#{search}%'").where(:status => 2).order("created_at #{@sx_order}")
+ end
+ @shixuns_count = @shixuns.count
+ limit = 20
+ @shixuns_pages = Paginator.new @shixuns_count, limit, params['page'] || 1
+ @offset ||= @shixuns_pages.offset
+ @shixuns = paginateHelper @shixuns, limit
+ respond_to do |format|
+ format.js
+ format.html
+ end
+ end
+
+ # 已关闭的实训
+ def close_shixuns
+ @menu_type = 3
+ @sub_type = 3
+ @sx_order = params[:sx_order].blank? ? "desc" : params[:sx_order] # 排序
+ search = params[:search] # 搜索字
+ keyword = params[:keyword].blank? ? "u_name" : params[:keyword] # 根据姓名/实训名搜索
+ reopen = params[:reopen] # 从新开启实训,参数是实训的Id
+ unless reopen.blank?
+ Shixun.find(reopen).update_attribute(:status, 2)
+ end
+ if "u_name" == keyword
+ # 如果用户搜索为空,不用遍历user表,直接查找所有实训, 有搜索时才查找user
+ if search.blank?
+ @shixuns = Shixun.where(:status => 3).order("updated_at #{@sx_order}")
+ else
+ user_id = User.where("concat(lastname, firstname) like '%#{search}%'")
+ @shixuns = Shixun.where(:user_id => user_id, :status => 3).order("updated_at #{@sx_order}")
+ end
+ else
+ @shixuns = Shixun.where("name like '%#{search}%'").where(:status => 3).order("updated_at #{@sx_order}")
+ end
+ @shixuns_count = @shixuns.count
+ limit = 20
+ @shixuns_pages = Paginator.new @shixuns_count, limit, params['page'] || 1
+ @offset ||= @shixuns_pages.offset
+ @shixuns = paginateHelper @shixuns, limit
+ respond_to do |format|
+ format.js
+ format.html
+ end
+ end
+
+ def users_trial
+ @menu_type = 7
+ @sub_type = 2
+ @users = User.where(:status => 1).order("created_on desc").all
+ @users_count = @users.count
+ @limit = 20
+ @is_remote = true
+ @users_pages = Paginator.new @users_count, @limit, params['page'] || 1
+ @offset ||= @users_pages.offset
+ @users = paginateHelper @users, @limit
+ end
+
+ def search_user
+
+=begin
+ auth = ApplyUserAuthentication.where(:status => params[:authentication])
+ auth_id = auth.blank? ? User.where(:status => 1).id : "(" + auth.map{|a| a.user_id }.join(",") + ")"
+=end
+
+ if params[:member_ids] && params[:trial_whether] == "trial_agree"
+ params[:member_ids].each do |member|
+ aUser = ApplyAction.where(:user_id => member, :container_type => "TrialAuthorization")
+ if aUser.blank?
+ ApplyAction.create(:user_id => member, :container_type => "TrialAuthorization", :status => 1)
+ else
+ aUser.update_all(:status => 1)
+ end
+ end
+ elsif params[:member_ids] && params[:trial_whether] == "trial_cancel"
+ ApplyAction.where(:user_id => params[:member_ids], :container_type => "TrialAuthorization").update_all(:status => 2)
+ end
+
+ if params[:member_ids] && (params[:occupation] == "occupation_agree" || params[:realname] == "realname_agree")
+ User.where(:id => params[:member_ids]).update_all(:authentication => true)
+ elsif params[:member_ids] && (params[:occupation] == "occupation_agree" || params[:realname] == "realname_cancel")
+ User.where(:id => params[:member_ids]).update_all(:authentication => false)
+ end
+
+ if params[:trial] == "-1"
+ apply = ApplyAction.where(:container_type => "TrialAuthorization")
+ apply_id = apply.blank? ? -1 : "(" + apply.map{|a| a.user_id}.join(",") + ")"
+ apply_user_id = User.where("id not in #{apply_id} and status = 1").all
+ apply_user_id = apply_user_id.blank? ? [-1] : apply_user_id.map{|a| a.id}.split(",")[0]
+ elsif params[:trial] == "-2"
+ apply_user_id = User.where(:status => 1).all
+ apply_user_id = apply_user_id.blank? ? [-1] : apply_user_id.map{|a| a.id}.split(",")[0]
+ else
+ apply = ApplyAction.where(:status => params[:trial])
+ apply_user_id = apply.blank? ? [-1] : apply.map{|a| a.user_id}.split(",")[0]
+ end
+
+ if params[:school] == ""
+ s_user_id = User.where(:status => 1).all
+ s_user_id = s_user_id.blank? ? [-1] : s_user_id.map{|s| s.id}.split(",")[0]
+ else
+ school = School.where("name like '%#{params[:school]}%'")
+ school_id = school.blank? ? -1 : school.map{|s| s.id }.split(",")[0]
+ usr = UserExtensions.where(:school_id => school_id)
+ s_user_id = usr.blank? ? [-1] : usr.map{|u| u.user_id}.split(",")[0]
+ end
+
+ if params[:department] == ""
+ d_user_id = User.where(:status => 1).all
+ d_user_id = d_user_id.blank? ? [-1] : d_user_id.map{|d| d.id}.split(",")[0]
+ else
+ department = Department.where("name like '%#{params[:department]}%'").all
+ dep_id = department.blank? ? -1 : department.map{|d| d.id}.split(",")
+ usr = UserExtensions.where(:department_id => dep_id)
+ d_user_id = usr.blank? ? [-1] : usr.map{|u| u.user_id}.split(",")[0]
+ end
+
+ user_id = s_user_id & d_user_id & apply_user_id
+
+ if params[:research_condition] == "name"
+ @users = User.where(:id => user_id).where("concat(lastname, firstname) like '%#{params[:research_contents]}%'").order("created_on desc")
+ elsif params[:research_condition] == "email"
+ @users = User.where(:id => user_id).where("mail like '%#{params[:research_contents]}%'").order("created_on desc")
+ elsif params[:research_condition] == "phone"
+ if params[:research_contents].blank?
+ @users = User.where(:id => user_id).order("created_on desc")
+ else
+ @users = User.where(:id => user_id).where("phone like '%#{params[:research_contents]}%'").order("created_on desc")
+ end
+
+ end
+
+ @users_count = @users.count
+ @limit = 20
+ @is_remote = true
+ @users_pages = Paginator.new @users_count, @limit, params['page'] || 1
+ @offset ||= @users_pages.offset
+ @users = paginateHelper @users, @limit
+
+ respond_to do |format|
+ format.js
+ end
+ end
+
+ def update_webssh
+ webssh = params[:status] == "true" ? true : false
+ @shixuns = Shixun.find(params[:shixun_id])
+ @shixuns.update_column(:webssh, webssh)
+ respond_to do |format|
+ format.js
+ end
+ end
+
+ def affirm_cancel_auth
+ user_id = params[:users]
+ end
+
+
+ def trial_authorization
+ @menu_type =10
+ @sub_type = 2
+ search = params[:search]
+ @status = trial_authorization_status(params[:status])
+ # @status = (params[:status].blank? || params[:status] == "0") ? 0 : [1,2]
+ if search.blank?
+ @authorizations = ApplyAction.where(:container_type => "TrialAuthorization", :status => @status).includes(:user)
+ else
+ user_id = User.find_by_sql("select id from users where concat(lastname,firstname) like '%#{search}%'")
+ @authorizations = ApplyAction.where(:container_type => "TrialAuthorization", :status => @status, :user_id => user_id).includes(:user)
+ end
+
+ @autu_count = @authorizations.count
+ @limit = 15
+ @is_remote = true
+ @autu_pages = Paginator.new @autu_count, @limit, params['page'] || 1
+ @offset ||= @autu_pages.offset
+ @authorizations = paginateHelper @authorizations, @limit
+
+ end
+
+ # 批量授权
+ def batch_authorization
+
+ end
+
+ # params[:type] 1:拒绝 0:同意
+ # authentication 会有一个初始值,不同的值代表不同的权限
+ # REDO: 后面权限改了后,一并要改
+ def trial_authorization_operation
+ apply_action = ApplyAction.find(params[:apply_id])
+ type = params[:type]
+ search = params[:search]
+ if type == "0"
+ authentication_user = AuthenticationsUsers.where(:user_id => apply_action.user_id).first
+ if authentication_user.blank?
+ AuthenticationsUsers.create(:user_id => apply_action.user_id, :authentication_id => 1)
+ end
+ end
+ apply_action.update_attributes(:status => (params[:type] == "1" ? 2 : 1), :reason => params[:reject_reason], :dealer_id => User.current.id)
+ user_id = User.find_by_sql("select id from users where concat(lastname,firstname) like '%#{search}%'")
+ @authorizations = ApplyAction.where(:container_type => "TrialAuthorization", :status => 0, :user_id => user_id).includes(:user)
+ @autu_count = @authorizations.count
+ @limit = 15
+ @is_remote = true
+ @autu_pages = Paginator.new @autu_count, @limit, params['page'] || 1
+ @offset ||= @autu_pages.offset
+ @authorizations = paginateHelper @authorizations, @limit
+ respond_to do |format|
+ format.js
+ end
+ end
+
+ def index
+
+ end
+
+ # copy from admin
+ def identity_authentication
+ @menu_type = 10
+ @sub_type = 1
+ @type = trial_authorization_status(params[:type])
+ type = params[:type] || 0 # 存在type 就用type 没有就为 0
+ user_id = User.find_by_sql("select id from users where concat(lastname,firstname) like '%#{params[:name]}%'")
+ @unapproved_user = ApplyUserAuthentication.where(:status => @type, :user_id => user_id).order("updated_at desc")
+ respond_to do |format|
+ format.html
+ format.js
+ end
+ end
+
+ # 拒绝身份认证
+ # copy from admin
+ def reject_authentication
+ apply_user = ApplyUserAuthentication.find(params[:apply_id])
+ reason = apply_user.update_attributes(:status => 2, :remarks => params[:reject_reason])
+ render :json => {success: reason}
+ end
+
+ # 统一身份认证
+ # copy from admin
+ def agree_authentication
+ apply_user = ApplyUserAuthentication.find(params[:apply_id])
+ user = User.find(apply_user.user_id)
+ apply_user.update_attribute(:status, 1)
+ user.update_attribute(:authentication, true)
+ @unapproved_user = ApplyUserAuthentication.where(:status => 0).order("updated_at desc")
+ respond_to do |format|
+ format.js
+ end
+ end
+
+ def subject_authorization
+ @menu_type = 10
+ @sub_type == 6
+ @type = trial_authorization_status params[:type]
+ @authorizations = ApplyAction.where(:container_type => "ApplySubject", :status => @type).order("created_at desc")
+ # @subject=Subject.all
+
+ @authorizations_count = @authorizations.count
+ @limit = 15
+ @is_remote = true
+ @authorizations_pages = Paginator.new @authorizations_count, @limit, params['page'] || 1
+ @offset ||= @authorizations_pages.offset
+ @authorizations = paginateHelper @authorizations, @limit
+ respond_to do |format|
+ format.js
+ format.html
+ end
+ end
+
+ def shixun_authorization
+ @menu_type = 10
+ @sub_type == 5
+ @type = trial_authorization_status params[:type]
+ @authorizations = ApplyAction.where(:container_type => "ApplyShixun", :status => @type).order("created_at desc")
+ search = params[:search]
+ unless search.blank?
+ @authorizations = @authorizations.where(:container_id => Shixun.where(:id => @authorizations.map(&:container_id)).where("name like '%#{search}%'").map(&:id)).order("created_at desc")
+ end
+
+ @authorizations_count = @authorizations.count
+ @limit = 15
+ @is_remote = true
+ @authorizations_pages = Paginator.new @authorizations_count, @limit, params['page'] || 1
+ @offset ||= @authorizations_pages.offset
+ @authorizations = paginateHelper @authorizations, @limit
+ respond_to do |format|
+ format.js
+ format.html
+ end
+ end
+ # 课程实训发布审批
+ def deal_subject_authorization
+ apply_action = ApplyAction.find(params[:apply_id])
+ type = params[:type].to_i
+ subject = Subject.find apply_action.container_id
+ if type == 0 #拒绝
+ subject.update_column('status', 0)
+ apply_action.update_attributes(:status => 2, :reason => params[:reject_reason], :dealer_id => User.current.id)
+ notes = "您所在团队提交的课程实训发布申请:#{subject.name},审核未通过。
原因:#{params[:reject_reason]}"
+ JournalsForMessage.create(:jour_id => subject.user_id, :jour_type => 'Principal', :user_id => User.current.id, :notes => notes, :private => 1, :reply_id => 0)
+ else #同意
+ subject.update_column('status', 2)
+ apply_action.update_attributes(:status => 1, :dealer_id => User.current.id)
+ end
+ @authorizations = ApplyAction.where(:container_type => "ApplySubject", :status => 0)
+ @authorizations_count = @authorizations.count
+ @limit = 15
+ @is_remote = true
+ @authorizations_pages = Paginator.new @authorizations_count, @limit, params['page'] || 1
+ @offset ||= @authorizations_pages.offset
+ @authorizations = paginateHelper @authorizations, @limit
+ respond_to do |format|
+ format.js
+ end
+ end
+ # 项目实训发布审批
+ def deal_shixun_authorization
+ apply_action = ApplyAction.find(params[:apply_id])
+ type = params[:type].to_i
+ shixun = Shixun.find apply_action.container_id
+ if type == 0 #拒绝
+ shixun.update_column('status', 0)
+ apply_action.update_attributes(:status => 2, :reason => params[:reject_reason], :dealer_id => User.current.id)
+ notes = "您所在团队提交的项目实训发布申请:#{shixun.name},审核未通过。
原因:#{params[:reject_reason]}"
+ shixun.shixun_members.each do |member|
+ JournalsForMessage.create(:jour_id => member.user_id, :jour_type => 'Principal', :user_id => User.current.id, :notes => notes, :private => 1, :reply_id => 0)
+ end
+ else #同意
+ shixun.update_column('status', 2)
+ apply_action.update_attributes(:status => 1, :dealer_id => User.current.id)
+ shixun_modify_status_without_publish shixun, 1
+ end
+ @authorizations = ApplyAction.where(:container_type => "ApplyShixun", :status => 0)
+ @authorizations_count = @authorizations.count
+ @limit = 15
+ @is_remote = true
+ @authorizations_pages = Paginator.new @authorizations_count, @limit, params['page'] || 1
+ @offset ||= @authorizations_pages.offset
+ @authorizations = paginateHelper @authorizations, @limit
+ respond_to do |format|
+ format.js
+ end
+ end
+end
diff --git a/app/controllers/messages_controller.rb b/app/controllers/messages_controller.rb
index c9f826c57..c2bce7a27 100644
--- a/app/controllers/messages_controller.rb
+++ b/app/controllers/messages_controller.rb
@@ -20,10 +20,10 @@ class MessagesController < ApplicationController
before_filter :authorize1, :only => [:show]
menu_item :boards
default_search_scope :messages
- before_filter :find_board, :only => [:new, :preview,:edit]
+ before_filter :find_board, :only => [:new, :create, :preview, :edit, :update, :sticky_topic]
before_filter :find_attachments, :only => [:preview]
- before_filter :find_message, :except => [:new, :preview, :join_org_subfield, :get_subfield_on_click_org, :join_org_subfields]
- before_filter :authorize, :except => [:preview, :edit, :destroy, :new,:join_org_subfield, :get_subfield_on_click_org, :join_org_subfields]
+ before_filter :find_message, :except => [:new, :create, :preview, :join_org_subfield, :get_subfield_on_click_org, :join_org_subfields]
+ before_filter :authorize, :except => [:preview, :edit, :update, :destroy, :message_replies, :new, :create, :join_org_subfield, :get_subfield_on_click_org, :join_org_subfields, :sticky_topic]
helper :boards
helper :watchers
@@ -39,7 +39,7 @@ class MessagesController < ApplicationController
def show
# 顶部导航
@project_menu_type = 3
-
+ @topic.update_column('visits', @topic.visits + 1)
@isReply = true
# page = params[:page]
# # Find the page of the requested reply
@@ -51,31 +51,32 @@ class MessagesController < ApplicationController
@replies = Message.where("root_id = #{@topic.id}").reorder("created_on desc")
@reply_count = @replies.count
@replies = get_no_children_comments_all @replies
- @limit_count = @replies.count
- @page = params[:page] ? params[:page].to_i + 1 : 0
- @limit = 10
- @replies = @replies[@page * @limit..@page * @limit + 9]
- @reply = Message.new(:subject => "RE: #{@message.subject}")
+ #@limit_count = @replies.count
+ #@page = params[:page] ? params[:page].to_i + 1 : 0
+ #@limit = 10
+ #@replies = @replies[@page * @limit..@page * @limit + 9]
+ @reply = Message.new
if @course
#帖子消息状态更新
course_messages = CourseMessage.where("user_id =? and course_message_type =? and course_message_id =? and course_id =? and viewed =?", User.current.id, 'Message', @topic.id, @course.id, 0)
course_messages.update_all(:viewed => true)
#@replies = @topic.children.
- #includes(:author, :attachments, :praise_tread_cache, {:board => :project}).
- #reorder("#{Message.table_name}.created_on DESC").
- #limit(@reply_pages.per_page).
- #offset(@reply_pages.offset).
- #all
+ #includes(:author, :attachments, :praise_tread_cache, {:board => :project}).
+ #reorder("#{Message.table_name}.created_on DESC").
+ #limit(@reply_pages.per_page).
+ #offset(@reply_pages.offset).
+ #all
#@replies = paginateHelper messages_replies,10
# 班级帖子回复消息设为已读
+
@replies.each do |comment|
- course_message = CourseMessage.where(:course_message_type => 'Message', :course_message_id => comment.id, :user_id => User.current.id, :viewed => 0)
- course_message.update_all(:viewed => 1)
+ course_message = CourseMessage.where(:course_message_type => 'Message', :course_message_id => comment.id, :user_id => User.current.id, :viewed => 0)
+ course_message.update_all(:viewed => 1)
end
@left_nav_type = 2
respond_to do |format|
format.js
- format.html {render :layout => 'base_courses'}
+ format.html {render :layout => 'base_edu'}
end
#render :action => "show", :layout => "base_courses"#by young
elsif @project
@@ -133,11 +134,19 @@ class MessagesController < ApplicationController
# Create a new topic
def new
+ @message = Message.new
+ respond_to do |format|
+ format.html { render :layout => 'base_edu' }
+ end
+ end
+
+ def create
if User.current.logged?
@message = Message.new
@message.author = User.current
@message.board = @board
@message.safe_attributes = params[:message]
+ @message.sticky = params[:message][:sticky] ? 1 : 0
if request.post?
if @project
is_public = @project.is_public
@@ -157,16 +166,18 @@ class MessagesController < ApplicationController
call_hook(:controller_messages_new_after_save, { :params => params, :message => @message})
render_attachment_warning_if_needed(@message)
- if params[:is_board]
- if @project
- redirect_to project_boards_path(@project)
- elsif @course
- redirect_to course_boards_path(@course, :board_id => @board.id)
- elsif @contest
- redirect_to contest_boards_path(@contest, :board_id => @board.id)
- end
- else
+ if @course
redirect_to board_message_url(@board, @message)
+ else
+ if params[:is_board]
+ if @project
+ redirect_to project_boards_path(@project)
+ elsif @contest
+ redirect_to contest_boards_path(@contest, :board_id => @board.id)
+ end
+ else
+ redirect_to board_message_url(@board, @message)
+ end
end
else
if params[:is_board]
@@ -178,7 +189,7 @@ class MessagesController < ApplicationController
redirect_to contest_boards_path(@contest, :board_id => @board.id, :flag => true)
end
else
- layout_file = @project ? 'base_projects' : (@course ? 'base_courses' : 'base_contests')
+ layout_file = @project ? 'base_projects' : (@course ? 'base_edu' : 'base_contests')
render :action => 'new', :layout => layout_file
end
@@ -187,7 +198,7 @@ class MessagesController < ApplicationController
@left_nav_type = 2
respond_to do |format|
format.html {
- layout_file = @project ? 'base_projects' : (@course ? 'base_courses' : 'base_contests')
+ layout_file = @project ? 'base_projects' : (@course ? 'base_edu' : 'base_contests')
render :layout => layout_file
}
end
@@ -201,7 +212,7 @@ class MessagesController < ApplicationController
def reply
if params[:parent_id]
parent = Message.find params[:parent_id]
- @topic = params[:activity_id].nil? ? parent : Message.find(params[:activity_id].to_i)
+ @topic = params[:activity_id].blank? ? parent : Message.find(params[:activity_id].to_i)
@reply = Message.new
@reply.author = User.current
@reply.board = parent.board
@@ -232,37 +243,53 @@ class MessagesController < ApplicationController
update_forge_activity(@topic.class,@topic.id)
update_org_activity(@topic.class,@topic.id)
+ redirect_to message_replies_board_message_path(@topic, :board_id => @board.id, :user_activity_id => params[:user_activity_id])
#@topic.update_attribute(:updated_on, Time.now)
- if !@reply.new_record?
- if params[:asset_id]
- ids = params[:asset_id].split(',')
- update_kindeditor_assets_owner ids,@reply.id,OwnerTypeHelper::MESSAGE
- end
+ # if !@reply.new_record?
+ # if params[:asset_id]
+ # ids = params[:asset_id].split(',')
+ # update_kindeditor_assets_owner ids,@reply.id,OwnerTypeHelper::MESSAGE
+ # end
+ #
+ # call_hook(:controller_messages_reply_after_save, { :params => params, :message => @reply})
+ # attachments = Attachment.attach_files(@reply, params[:attachments])
+ # render_attachment_warning_if_needed(@reply)
+ # else
+ # #render file: 'messages#show', layout: 'base_courses'
+ # end
- call_hook(:controller_messages_reply_after_save, { :params => params, :message => @reply})
- attachments = Attachment.attach_files(@reply, params[:attachments])
- render_attachment_warning_if_needed(@reply)
- else
- #render file: 'messages#show', layout: 'base_courses'
- end
- if params[:user_activity_id]
- @user_activity_id = params[:user_activity_id]
- @is_course = params[:is_course] if params[:is_course]
- @is_board = params[:is_board] if params[:is_board]
- respond_to do |format|
- format.js
- end
- return
- else
- redirect_to board_message_url(@board, @topic)
- return
- end
+ # if params[:user_activity_id]
+ # @user_activity_id = params[:user_activity_id]
+ # @is_course = params[:is_course] if params[:is_course]
+ # @is_board = params[:is_board] if params[:is_board]
+ # respond_to do |format|
+ # format.js
+ # end
+ # return
+ # else
+ # redirect_to board_message_url(@board, @topic)
+ # return
+ # end
end
+ def message_replies
+ @replies = Message.where("root_id = #{@topic.id}").reorder("created_on desc")
+ @reply_count = @replies.count
+ @replies = get_no_children_comments_all @replies
+ #@limit_count = @replies.count
+ #@page = params[:page] ? params[:page].to_i + 1 : 0
+ #@limit = 10
+ #@replies = @replies[@page * @limit..@page * @limit + 9]
+ @reply = Message.new()
+ @user_activity_id = params[:user_activity_id].blank? ? @topic.id : params[:user_activity_id].to_i
+ respond_to do |format|
+ format.js
+ end
+ end
+
# Edit a message
def edit
- @isReply = false
if @project
(render_403; return false) unless @message.editable_by?(User.current)
elsif @course
@@ -273,55 +300,34 @@ class MessagesController < ApplicationController
(render_403; return false) unless @message.org_subfield_editable_by?(User.current)
end
+ respond_to do |format|
+ format.html {
+ if @project
+ layout_file = 'base_projects'
+ elsif @course
+ @left_nav_type = 2
+ layout_file = 'base_edu'
+ elsif @contest
+ @left_nav_type = 4
+ layout_file = 'base_contests'
+ elsif @org_subfield
+ @organization = @org_subfield.organization
+ layout_file = 'base_org'
+ end
+ render :layout => layout_file
+ }
+ end
+ end
+
+ def update
@message.safe_attributes = params[:message]
- if request.post? && @message.save
+ @message.sticky = params[:message][:sticky] ? 1 : 0
+ if @message.save
attachments = Attachment.attach_files(@message, params[:attachments])
render_attachment_warning_if_needed(@message)
#flash[:notice] = l(:notice_successful_update)
@message.reload
- if params[:is_course] && params[:is_course].to_i == 0
- redirect_to user_activities_path(User.current.id)
- elsif params[:is_course] && params[:is_course].to_i == 1 && params[:is_board] && params[:is_board].to_i == 0
- if @project
- redirect_to project_path(@project)
- elsif @course
- redirect_to course_activity_path(@course)
- elsif @contest
- redirect_to contest_path(@contest)
- end
- elsif params[:is_course] && params[:is_course].to_i == 1 && params[:is_board] && params[:is_board].to_i == 1
- if @project
- redirect_to project_boards_path(@project)
- elsif @course
- redirect_to course_boards_path(@course)
- elsif @contest
- redirect_to contest_boards_path(@contest)
- end
- else
- redirect_to board_message_url(@message.board, @message.root, :r => (@message.parent_id && @message.id))
- end
- elsif request.get? || request.post?
- if params[:is_course] && params[:is_board]
- @is_course = params[:is_course]
- @is_board = params[:is_board]
- end
- respond_to do |format|
- format.html {
- if @project
- layout_file = 'base_projects'
- elsif @course
- @left_nav_type = 2
- layout_file = 'base_courses'
- elsif @contest
- @left_nav_type = 4
- layout_file = 'base_contests'
- elsif @org_subfield
- @organization = @org_subfield.organization
- layout_file = 'base_org'
- end
- render :layout => layout_file
- }
- end
+ redirect_to board_message_url(@message.board, @message.root, :r => (@message.parent_id && @message.id))
end
end
@@ -333,9 +339,7 @@ class MessagesController < ApplicationController
@user_activity_id = params[:user_activity_id]
@is_course = params[:is_course] if params[:is_course]
@is_board = params[:is_board] if params[:is_board]
- respond_to do |format|
- format.js
- end
+ redirect_to message_replies_board_message_path(@topic, :board_id => @board.id, :user_activity_id => params[:user_activity_id])
return
end
if @project
@@ -399,6 +403,12 @@ class MessagesController < ApplicationController
end
end
+ def sticky_topic
+ (render_403; return false) unless (User.current.admin? || User.current.allowed_to?(:as_teacher, @course))
+ @topic.update_attributes(:sticky => @topic.sticky == 1 ? 0 : 1)
+ redirect_to board_message_path(@topic.board_id, @topic)
+ end
+
def quote
# @subject = @message.subject
# @subject = "RE: #{@subject}" unless @subject.starts_with?('RE:')
@@ -437,8 +447,8 @@ class MessagesController < ApplicationController
:created_on => Time.now, :updated_on => Time.now, :locked => @message.locked, :sticky => @message.sticky)
@message.attachments.each do |attach|
mes.attachments << Attachment.new(:filename => attach.filename, :disk_filename => attach.disk_filename, :filesize => attach.filesize, :content_type => attach.content_type, :digest => attach.digest,
- :downloads => 0, :author_id => User.current.id, :created_on => Time.now, :description => attach.description, :disk_directory => attach.disk_directory, :attachtype => attach.attachtype,
- :is_public => attach.is_public, :quotes => 0)
+ :downloads => 0, :author_id => User.current.id, :created_on => Time.now, :description => attach.description, :disk_directory => attach.disk_directory, :attachtype => attach.attachtype,
+ :is_public => attach.is_public, :quotes => 0)
end
# OrgSubfieldMessage.create(:org_subfield_id => field_id.to_i, :message_id => mes.id, :message_type => type)
# org_acts = OrgActivity.where("container_type='OrgSubfield' and container_id=? and org_act_type='Message' and org_act_id=?", field_id.to_i, @message.id)
diff --git a/app/controllers/myshixuns_controller.rb b/app/controllers/myshixuns_controller.rb
index abab48f3b..e69e9fd9f 100644
--- a/app/controllers/myshixuns_controller.rb
+++ b/app/controllers/myshixuns_controller.rb
@@ -27,7 +27,7 @@ class MyshixunsController < ApplicationController
jenkins_shixuns = Redmine::Configuration['jenkins_shixuns']
uri = URI("#{jenkins_shixuns}/jenkins-exec/webssh/getConnectInfo")
user_id = User.current.id
- params = {gameID:@myshixun.id}
+ params = {gameID:@myshixun.id, operationEnvironment:@myshixun.shixun.try(:language)}
res = uri_exec uri, params
if res && res['code'].to_i != 0
raise("实训云平台繁忙(繁忙等级:92)")
diff --git a/app/controllers/school_controller.rb b/app/controllers/school_controller.rb
index b6e34a185..ef053bb16 100644
--- a/app/controllers/school_controller.rb
+++ b/app/controllers/school_controller.rb
@@ -1,285 +1,286 @@
-class SchoolController < ApplicationController
- layout 'course_base'
- before_filter :require_admin, :only => :upload_logo
-
- def upload
- uploaded_io = params[:logo]
- school_id ||= params[:id]
- s1 = School.find(school_id)
- unless uploaded_io.nil?
- File.open(Rails.root.join('public', 'images', 'school', school_id.to_s+'.png'), 'wb') do |file|
- file.write(uploaded_io.read)
- end
-
- s1.logo_link = '/images/school/'+school_id.to_s+'.png'
-
- end
- s1.name = params[:name] unless params[:name].blank?
- s1.province = params[:province] unless params[:province].blank?
- s1.save
- redirect_to admin_schools_url(:school_name => params[:school_name])
- end
-
- def upload_logo
- @school = School.find params[:id]
- @school_name = params[:school_name]
- end
-
- #获取制定学校开设的课程数
- def course_count school_id
- School.find(school_id).courses.count
- end
-
-
- def index
-
- end
-
- def get_province
- @provinces = School.find_by_sql("select distinct province from schools")
-
- options = ""
-
- @provinces.each do |p|
- options << ""
- end
-
- # 取id取学校名
- # 连接子表: 查询已添加用户的学校
- school = School.select("id, name").
- joins("RIGHT JOIN (
- SELECT DISTINCT school_id
- FROM #{UserExtensions.table_name}
- WHERE school_id IS NOT NULL) AS sids ON schools.id = sids.school_id").
- where("#{School.table_name}.id IS NOT NULL")
-
- options_s = ""
- school.each do |s|
- options_s << "
| - 序号 - | -- <%=l(:label_project)%> - | -- <%=l(:field_is_public)%> - | -- <%=l(:field_created_on)%> - | -- |
|---|---|---|---|---|
| - <%= project.id %> - | - -- <%= checked_image project.is_public? %> - | -- <%= format_date(project.created_on) %> - | -- <%= link_to(l(:button_archive), { :controller => 'projects', :action => 'archive', :id => project, :status => params[:status] }, :data => {:confirm => l(:text_are_you_sure)}, :method => :post, :class => 'icon icon-lock') unless project.archived? %> - <%= link_to(l(:button_unarchive), { :controller => 'projects', :action => 'unarchive', :id => project, :status => params[:status] }, :method => :post, :class => 'icon icon-unlock') if project.archived? && (project.parent.nil? || !project.parent.archived?) %> - <%= link_to(l(:button_delete), project_path(project), :method => :delete, :class => 'icon icon-del', :onClick=>"delcfm()" ) %> - | -
- <% if @shixun.status == 0 && User.current.manager_of_shixun?(@shixun) %> + <% if User.current.manager_of_shixun?(@shixun) %> 编辑 <% end %>
diff --git a/app/views/challenges/_edit_propaedeutics.html.erb b/app/views/challenges/_edit_propaedeutics.html.erb new file mode 100644 index 000000000..d3a5af201 --- /dev/null +++ b/app/views/challenges/_edit_propaedeutics.html.erb @@ -0,0 +1,44 @@ ++ <% if User.current.manager_of_shixun?(@shixun) %> + 编辑 + <% end %> +
+- <% if @shixun.status == 0 && User.current.manager_of_shixun?(@shixun) %> + <% if User.current.manager_of_shixun?(@shixun) %> 编辑 <% end %>
diff --git a/app/views/challenges/_edit_skill.html.erb b/app/views/challenges/_edit_skill.html.erb index 2a00676bd..64c4556b6 100644 --- a/app/views/challenges/_edit_skill.html.erb +++ b/app/views/challenges/_edit_skill.html.erb @@ -2,7 +2,7 @@- <% if @shixun.status == 0 && User.current.manager_of_shixun?(@shixun) %> + <% if User.current.manager_of_shixun?(@shixun) %> 编辑 <% end %>
diff --git a/app/views/challenges/_edit_task_pass.html.erb b/app/views/challenges/_edit_task_pass.html.erb index 0e602d69d..75473897c 100644 --- a/app/views/challenges/_edit_task_pass.html.erb +++ b/app/views/challenges/_edit_task_pass.html.erb @@ -3,7 +3,7 @@- <% if @shixun.status == 0 && User.current.manager_of_shixun?(@shixun) %> + <% if User.current.manager_of_shixun?(@shixun) %> 编辑 <% end %>
@@ -23,6 +23,31 @@@@ -44,39 +44,44 @@
-| 序号 | +姓名 | +用户ID | +学号 | +分班 | +操作 | +
|---|---|---|---|---|---|
| <%= index + 1 + (@page - 1) * 20 %> | +<%= link_to user.show_real_name, user_path(user), :class => 'edu-txt-w140 task-hide mt5', :target => '_blank' %> | +<%= user.login %> | +<%= user.user_extensions ? user.user_extensions.student_id : '' %> | +<%= member.course_group_id == 0 ? '未分班' : member.course_group.name %> | +<% if user == User.current %> - 删除 + 删除 <% else %> -- <% end %> - - + | +
+ <% if is_teacher || comment.creator_user == User.current%> + 删除 + <% end %> + + <%=render :partial=> "praise_tread/edu_praise", :locals => {:activity=>comment, :user_activity_id=>comment.id,:type=>"reply"}%> + + <%= link_to( + '回复'.html_safe, + {:controller => 'users' ,:action => 'reply_to', :reply_id => comment.id, :type => activity.class.to_s, :user_activity_id => activity.id}, + :remote => true, + :method => 'get', + :title => l(:button_reply)) %> +
+ + +