diff --git a/app/controllers/syllabus_member_controller.rb b/app/controllers/syllabus_member_controller.rb index f2a0c02fa..14d40cb2f 100644 --- a/app/controllers/syllabus_member_controller.rb +++ b/app/controllers/syllabus_member_controller.rb @@ -1,7 +1,9 @@ class SyllabusMemberController < ApplicationController + before_filter :find_syllabus, :only => [:syl_member_autocomplete, :create, :change_manager, :change_manager_alert] + before_filter :find_syllabus_member, :only => [:destroy, :update_rank] + def syl_member_autocomplete - @syllabus = Syllabus.find(params[:syllabus]) @flag = params[:flag] || false respond_to do |format| format.js @@ -9,11 +11,10 @@ class SyllabusMemberController < ApplicationController end def create - @syllabus = Syllabus.find(params[:syllabus]) - if params[:membership].nil? + if params[:member_id].nil? @fail_hint = l(:label_blank_user_lists_for_org) else - member_ids = params[:membership][:user_ids] + member_ids = params[:member_id] last_rank = @syllabus.syllabus_members.order("rank asc").last.rank user_ids = @syllabus.syllabus_members.map{|sy| sy.user_id} member_ids.each_with_index do |user_id, i| @@ -22,15 +23,19 @@ class SyllabusMemberController < ApplicationController @syllabus.syllabus_members << member end end - @members = @syllabus.syllabus_members.order("rank asc") + @members = @syllabus.syllabus_members.includes(:user => {:user_extensions => []}).order("rank asc") + @is_syllabus_member = User.current.admin? || @syllabus.syllabus_members.map{|sm| sm.user_id}.include?(User.current.id) end respond_to do |format| format.js end end + def change_manager_alert + @members = @syllabus.syllabus_members.where("id != #{@syllabus.user_id}") + end + def change_manager - @syllabus = Syllabus.find(params[:syllabus]) if params[:chooseteacher] man_member = SyllabusMember.where(:syllabus_id => @syllabus.id, :user_id => @syllabus.user_id).first cha_member = @syllabus.syllabus_members.where(:id => params[:chooseteacher].to_i).first @@ -40,32 +45,31 @@ class SyllabusMemberController < ApplicationController @syllabus.update_attributes(:user_id => cha_member.user_id) end end + @members = @syllabus.syllabus_members.includes(:user => {:user_extensions => []}).order("rank asc") + @is_syllabus_member = User.current.admin? || @syllabus.syllabus_members.map{|sm| sm.user_id}.include?(User.current.id) end def destroy - member = SyllabusMember.find(params[:id]) - @syllabus = member.syllabus - after_syl_members = @syllabus.syllabus_members.where("rank > #{member.rank}") + after_syl_members = @syllabus.syllabus_members.where("rank > #{@member.rank}") after_syl_members.update_all("rank = rank - 1") - member.destroy - @members = @syllabus.syllabus_members.order("rank asc") + @member.destroy + @members = @syllabus.syllabus_members.includes(:user => {:user_extensions => []}).order("rank asc") + @is_syllabus_member = User.current.admin? || @syllabus.syllabus_members.map{|sm| sm.user_id}.include?(User.current.id) respond_to do |format| format.js end end def update_rank - member = SyllabusMember.find(params[:id]) - @syllabus = member.syllabus members = @syllabus.syllabus_members - if params[:opr] == 'up' && member.rank > 1 - before_mem = members.where("rank = #{member.rank - 1}").first - if before_mem && member.update_attribute('rank', member.rank - 1) + if params[:opr] == 'up' && @member.rank > 1 + before_mem = members.where("rank = #{@member.rank - 1}").first + if before_mem && @member.update_attribute('rank', @member.rank - 1) before_mem.update_attribute('rank', before_mem.rank + 1) end - elsif params[:opr] == 'down' && member.rank < members.count - after_mem = members.where("rank = #{member.rank + 1}").first - if after_mem && member.update_attribute('rank', member.rank + 1) + elsif params[:opr] == 'down' && @member.rank < members.count + after_mem = members.where("rank = #{@member.rank + 1}").first + if after_mem && @member.update_attribute('rank', @member.rank + 1) after_mem.update_attribute('rank', after_mem.rank - 1) end end @@ -74,4 +78,14 @@ class SyllabusMemberController < ApplicationController format.js end end + + private + def find_syllabus + @syllabus = Syllabus.find params[:syllabus] + end + + def find_syllabus_member + @member = SyllabusMember.find(params[:id]) + @syllabus = @member.syllabus + end end diff --git a/app/controllers/syllabuses_controller.rb b/app/controllers/syllabuses_controller.rb index 35db25b68..c6c5304b0 100644 --- a/app/controllers/syllabuses_controller.rb +++ b/app/controllers/syllabuses_controller.rb @@ -6,23 +6,30 @@ class SyllabusesController < ApplicationController include CoursesHelper before_filter :is_logged, :only => [:index, :show, :edit, :new, :update, :destroy, :delete_syllabus] - before_filter :find_syllabus, :only => [:show, :edit, :update, :destroy, :syllabus_courselist, :edit_syllabus_eng_name, :edit_syllabus_title, :update_base_info, :delete_syllabus, :delete_des, :members] + before_filter :find_syllabus, :only => [:show, :edit, :update, :destroy, :syllabus_courselist, :edit_syllabus_eng_name, :edit_syllabus_title, :update_base_info, :delete_syllabus, + :delete_des, :members, :update_des, :edit_ref, :update_ref, :add_sy_member_alert, :search_not_sy_member] def index user = User.current @syllabuses = user.syllabuses end def show + @is_syllabus_member = User.current.admin? || @syllabus.syllabus_members.map{|sm| sm.user_id}.include?(User.current.id) + @reference_materials = @syllabus.reference_materials + @members = @syllabus.syllabus_members.includes(:user => {:user_extensions => []}).order("rank asc") + datetime = (Time.now + 6*30*24*60*60).strftime('%Y-%m-%d %H:%M:%S') + @courses = @syllabus.courses.where("is_delete = 0 and created_at >= '#{datetime}'").select("courses.*,(SELECT MAX(updated_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS ca_update").order("ca_update desc") + @end_courses = @syllabus.courses.where("is_delete = 0 and created_at < '#{datetime}'").select("courses.*,(SELECT MAX(updated_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS ca_update").order("ca_update desc") respond_to do |format| format.js - format.html{render :layout => 'base_syllabus'} + format.html{render :layout => 'base_edu_syllabus'} format.api end end def new @syllabus = Syllabus.new - render :layout => 'new_base' + render :layout => 'base_edu' end def create @@ -56,15 +63,21 @@ class SyllabusesController < ApplicationController def regex_syllabus_name data = {result:1} - if Syllabus.where(:user_id => User.current.id, :name => params[:name]).count > 0 - data[:result] = 0 + if params[:syllabus_id] + if User.current.syllabuses.where("id != #{params[:syllabus_id]} and title = '#{params[:name]}'").count > 0 + data[:result] = 0 + end + else + if Syllabus.where(:user_id => User.current.id, :title => params[:name]).count > 0 + data[:result] = 0 + end end render :json => data end def edit respond_to do |format| - format.html{render :layout => 'base_syllabus'} + format.html{render :layout => 'base_edu'} end end @@ -87,24 +100,60 @@ class SyllabusesController < ApplicationController redirect_to syllabus_path(@syllabus) end - def edit_des + def edit_ref + @reference_materials = @syllabus.reference_materials respond_to do |format| - format.html{render :layout => 'base_syllabus'} + format.js + end + end + + def update_ref + @syllabus.reference_materials.destroy_all + refer_inputs = params[:syllabus][:book] if params[:syllabus] + if Array === refer_inputs + refer_inputs.each_with_index do |val, i| + @syllabus.reference_materials << ReferenceMaterial.new( + book: val, + editor: params[:syllabus][:editor][i], + press: params[:syllabus][:press][i] + ) + end + end + sy_update_record = SyllabusUpdateRecord.new(:property => 2, :user_id => User.current.id) + @syllabus.syllabus_update_records << sy_update_record + @reference_materials = @syllabus.reference_materials + @is_syllabus_member = User.current.admin? || @syllabus.syllabus_members.map{|sm| sm.user_id}.include?(User.current.id) + respond_to do |format| + format.js end end def update_des @syllabus.description = params[:syllabus][:description] @syllabus.des_status = 1 - @syllabus.save_attachments(params[:attachments]) + #@syllabus.save_attachments(params[:attachments]) if @syllabus.save + sy_update_record = SyllabusUpdateRecord.new(:property => 1, :user_id => User.current.id) + @syllabus.syllabus_update_records << sy_update_record if params[:asset_id] ids = params[:asset_id].split(',') update_kindeditor_assets_owner ids,@syllabus.id,OwnerTypeHelper::SYLLABUS end - redirect_to syllabus_path(@syllabus) + end + redirect_to syllabus_path(@syllabus) + end + + def add_sy_member_alert + respond_to do |format| + format.js + end + end + + def search_not_sy_member + if params[:q] && params[:q].lstrip.rstrip != "" + @users = Principal.active.sorted.not_member_of_syllabus(@syllabus).like(params[:q]) else - redirect_to syllabus_path(@syllabus) + @users = [] end end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 6fe2a5180..b58e397f7 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -4343,6 +4343,35 @@ def first_level_discipline_option disc_ca = 27 content end +def syllabus_type_option + content = [] + option0 = [] + option0 << "请选择课程性质" + option0 << 0 + option1 = [] + option1 << "专业选修课" + option1 << 3 + option2 = [] + option2 << "学科必修课" + option2 << 2 + option3 = [] + option3 << "公共必修课" + option3 << 1 + option4 = [] + option4 << "实践选修课" + option4 << 5 + option5 = [] + option5 << "实践必修课" + option5 << 4 + content << option0 + content << option1 + content << option2 + content << option3 + content << option4 + content << option5 + content +end + def course_syllabus_option user = User.current syllabus_members = SyllabusMember.where("user_id = #{user.id}") syllabus_ids = syllabus_members.empty? ? "(-1)" : "(" + syllabus_members.map{|mem| mem.syllabus_id}.join(',') + ")" diff --git a/app/models/syllabus.rb b/app/models/syllabus.rb index ecb496753..80d24ba5a 100644 --- a/app/models/syllabus.rb +++ b/app/models/syllabus.rb @@ -26,6 +26,7 @@ class Syllabus < ActiveRecord::Base has_many :syllabus_members, :dependent => :destroy has_many :praise_tread, as: :praise_tread_object, dependent: :destroy has_one :praise_tread_cache, as: :object, dependent: :destroy + belongs_to :discipline_category belongs_to :first_level_discipline attr_accessible :description, :user_id, :title, :eng_name, :syllabus_type, :credit, :hours, :theory_hours, :practice_hours, :applicable_major, :pre_course, :major_level, :discipline_category_id, :first_level_discipline_id safe_attributes 'title','user', 'description', 'eng_name', 'syllabus_type', 'credit', 'hours', 'theory_hours', 'practice_hours', 'credit', 'applicable_major', 'pre_course', 'major_level', 'discipline_category_id', "first_level_discipline_id" @@ -55,7 +56,7 @@ class Syllabus < ActiveRecord::Base type = "" case self.major_level when 1 - type = "研究生/博士" + type = "研究生" when 2 type = "本科" when 3 @@ -81,6 +82,14 @@ class Syllabus < ActiveRecord::Base type end + def syllabus_discipline_category + self.discipline_category ? self.discipline_category.name : '' + end + + def syllabus_first_level_discipline + self.first_level_discipline ? self.first_level_discipline.name : '' + end + ###添加回复 def self.add_syllabus_jour(user, notes, id, root_id, options = {}) syllabus = Syllabus.find(id) diff --git a/app/models/user_extensions.rb b/app/models/user_extensions.rb index 3674d97f6..6beafa0b8 100644 --- a/app/models/user_extensions.rb +++ b/app/models/user_extensions.rb @@ -3,8 +3,8 @@ identity字段含义 0 教师教授 1 学生 - 2 企业 - 3 开发者 + 2 专业人士 + #3 开发者 =end class UserExtensions < ActiveRecord::Base validate :school, presence: true @@ -84,6 +84,23 @@ class UserExtensions < ActiveRecord::Base end end - + def user_technical_title + if self.technical_title + title = self.technical_title + else + case self.identity + when 0 + title = l(:label_account_identity_teacher) + when 1 + title = l(:label_account_identity_student) + when 2 + title = l(:label_account_identity_professional) + when 3 + title = l(:label_account_identity_professional) + else + title = '' + end + end + end end diff --git a/app/views/games/_pass_game_show.html.erb b/app/views/games/_pass_game_show.html.erb index fe8187b35..0d15fa4bb 100644 --- a/app/views/games/_pass_game_show.html.erb +++ b/app/views/games/_pass_game_show.html.erb @@ -1,4 +1,4 @@ -<%= stylesheet_link_tag 'css/bigdata-common', 'css/bigdata-popup' %> +<%= stylesheet_link_tag 'css/edu-common', 'css/edu-popup' %>