|  |  |  | @ -15,6 +15,7 @@ class TagsController < ApplicationController | 
			
		
	
		
			
				
					|  |  |  |  |   include ContestsHelper | 
			
		
	
		
			
				
					|  |  |  |  |   include ActsAsTaggableOn::TagsHelper | 
			
		
	
		
			
				
					|  |  |  |  |   include TagsHelper | 
			
		
	
		
			
				
					|  |  |  |  |   include FilesHelper | 
			
		
	
		
			
				
					|  |  |  |  |   helper :projects | 
			
		
	
		
			
				
					|  |  |  |  |   helper :courses | 
			
		
	
		
			
				
					|  |  |  |  |   helper :tags | 
			
		
	
	
		
			
				
					|  |  |  | @ -236,47 +237,89 @@ class TagsController < ApplicationController | 
			
		
	
		
			
				
					|  |  |  |  |     @rename_tag_name = params[:renameName] | 
			
		
	
		
			
				
					|  |  |  |  |     @taggable_id = params[:taggableId] | 
			
		
	
		
			
				
					|  |  |  |  |     @taggable_type = numbers_to_object_type(params[:taggableType]) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     @course_id = params[:courseId] | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     @rename_tag = (ActsAsTaggableOn::Tag.find_by_name(@rename_tag_name))  #查找重命名后的tag | 
			
		
	
		
			
				
					|  |  |  |  |     @tag_id = (ActsAsTaggableOn::Tag.find_by_name(@tag_name)).id  #重命名前的tag_id | 
			
		
	
		
			
				
					|  |  |  |  |     @taggings = ActsAsTaggableOn::Tagging.find_by_tag_id_and_taggable_id_and_taggable_type(@tag_id,@taggable_id,@taggable_type) | 
			
		
	
		
			
				
					|  |  |  |  |     @obj = get_object(@taggable_id,params[:taggableType]) | 
			
		
	
		
			
				
					|  |  |  |  |     if(@rename_tag.nil?) #这次命名的是新的tag | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |       # 是否还有其他记录 引用了 tag_id | 
			
		
	
		
			
				
					|  |  |  |  |       @tagging = ActsAsTaggableOn::Tagging.where("tag_id = #{@tag_id}") | 
			
		
	
		
			
				
					|  |  |  |  |       # 如果taggings表中记录为 1 ,那么改变@tag_id对应的tag的名字 | 
			
		
	
		
			
				
					|  |  |  |  |       if @tagging.count == 1 | 
			
		
	
		
			
				
					|  |  |  |  |         @tag = ActsAsTaggableOn::Tag.find_by_id(@tag_id) | 
			
		
	
		
			
				
					|  |  |  |  |         @tag.update_attributes({:name=>@rename_tag_name}) | 
			
		
	
		
			
				
					|  |  |  |  |       else #如果tagging表中的记录大于1,那么就要新增tag记录 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         unless @obj.nil? | 
			
		
	
		
			
				
					|  |  |  |  |           @obj.tag_list.add(@rename_tag_name.split(",")) | 
			
		
	
		
			
				
					|  |  |  |  |          @obj.save | 
			
		
	
		
			
				
					|  |  |  |  |     @taggings = ActsAsTaggableOn::Tagging.find_by_tag_id_and_taggable_id_and_taggable_type(@tag_id,@taggable_id,@taggable_type) unless @taggable_id.blank? | 
			
		
	
		
			
				
					|  |  |  |  |     @obj = get_object(@taggable_id,params[:taggableType]) unless @taggable_id.blank? | 
			
		
	
		
			
				
					|  |  |  |  |     if  @taggable_id.blank? #如果没有传tag_id,那么直接更新tag_name就好了。但是要防止 重命名后的tag存在。 | 
			
		
	
		
			
				
					|  |  |  |  |       #看重命名后的tag是否存在。如果存在的话,只需要更改taggings里边的id即可 | 
			
		
	
		
			
				
					|  |  |  |  |       if @rename_tag | 
			
		
	
		
			
				
					|  |  |  |  |         @taggings = ActsAsTaggableOn::Tagging.find_by_tag_id_and_taggable_type(@tag_id,@taggable_id,@taggable_type) | 
			
		
	
		
			
				
					|  |  |  |  |         @taggings.update_attributes({:tag_id=>@rename_tag.id}) | 
			
		
	
		
			
				
					|  |  |  |  |       else #如果不存在,那么就直接更新该tag名称为新的名称 | 
			
		
	
		
			
				
					|  |  |  |  |         (ActsAsTaggableOn::Tag.find_by_name(@tag_name)).update_attributes(:name=>@rename_tag_name) | 
			
		
	
		
			
				
					|  |  |  |  |       end | 
			
		
	
		
			
				
					|  |  |  |  |     else | 
			
		
	
		
			
				
					|  |  |  |  |       if(@rename_tag.nil?) #这次命名的是新的tag | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         # 是否还有其他记录 引用了 tag_id | 
			
		
	
		
			
				
					|  |  |  |  |         @tagging = ActsAsTaggableOn::Tagging.where("tag_id = #{@tag_id}") | 
			
		
	
		
			
				
					|  |  |  |  |         # 如果taggings表中记录为 1 ,那么改变@tag_id对应的tag的名字 | 
			
		
	
		
			
				
					|  |  |  |  |         if @tagging.count == 1 | 
			
		
	
		
			
				
					|  |  |  |  |           @tag = ActsAsTaggableOn::Tag.find_by_id(@tag_id) | 
			
		
	
		
			
				
					|  |  |  |  |           @tag.update_attributes({:name=>@rename_tag_name}) | 
			
		
	
		
			
				
					|  |  |  |  |         else #如果tagging表中的记录大于1,那么就要新增tag记录 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |           unless @obj.nil? | 
			
		
	
		
			
				
					|  |  |  |  |             @obj.tag_list.add(@rename_tag_name.split(",")) | 
			
		
	
		
			
				
					|  |  |  |  |             @obj.save | 
			
		
	
		
			
				
					|  |  |  |  |           end | 
			
		
	
		
			
				
					|  |  |  |  |           #删除原来的对应的taggings的记录 | 
			
		
	
		
			
				
					|  |  |  |  |           unless @taggings.nil? | 
			
		
	
		
			
				
					|  |  |  |  |             @taggings.delete | 
			
		
	
		
			
				
					|  |  |  |  |           end | 
			
		
	
		
			
				
					|  |  |  |  |         end | 
			
		
	
		
			
				
					|  |  |  |  |         #删除原来的对应的taggings的记录 | 
			
		
	
		
			
				
					|  |  |  |  |       else #这是已有的tag | 
			
		
	
		
			
				
					|  |  |  |  |         # 更改taggings记录里的tag_id | 
			
		
	
		
			
				
					|  |  |  |  |         unless @taggings.nil? | 
			
		
	
		
			
				
					|  |  |  |  |           @taggings.delete | 
			
		
	
		
			
				
					|  |  |  |  |           @taggings.update_attributes({:tag_id=>@rename_tag.id}) | 
			
		
	
		
			
				
					|  |  |  |  |         end | 
			
		
	
		
			
				
					|  |  |  |  |       end | 
			
		
	
		
			
				
					|  |  |  |  |     else #这是已有的tag | 
			
		
	
		
			
				
					|  |  |  |  |       # 更改taggings记录里的tag_id | 
			
		
	
		
			
				
					|  |  |  |  |       unless @taggings.nil? | 
			
		
	
		
			
				
					|  |  |  |  |         @taggings.update_attributes({:tag_id=>@rename_tag.id}) | 
			
		
	
		
			
				
					|  |  |  |  |       end | 
			
		
	
		
			
				
					|  |  |  |  |     end | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     @obj_flag =  params[:taggableType] | 
			
		
	
		
			
				
					|  |  |  |  |     if @obj && @obj_flag == '6' && @obj.container.kind_of?(Course) | 
			
		
	
		
			
				
					|  |  |  |  |       @course = @obj.container | 
			
		
	
		
			
				
					|  |  |  |  |       @tag_list = @tag_list = get_course_tag_list @course | 
			
		
	
		
			
				
					|  |  |  |  |     elsif @course_id | 
			
		
	
		
			
				
					|  |  |  |  |       @course = Course.find(@course_id) | 
			
		
	
		
			
				
					|  |  |  |  |       @tag_list = get_course_tag_list @course | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |       #这里要引用FilesController里的逻辑了。将资源库当前的文件列表刷新一遍。 | 
			
		
	
		
			
				
					|  |  |  |  |       @flag = params[:flag] || false | 
			
		
	
		
			
				
					|  |  |  |  |       sort = "" | 
			
		
	
		
			
				
					|  |  |  |  |       @sort = "" | 
			
		
	
		
			
				
					|  |  |  |  |       @order = "" | 
			
		
	
		
			
				
					|  |  |  |  |       @is_remote = false | 
			
		
	
		
			
				
					|  |  |  |  |       @isproject = false | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |       sort = "#{Attachment.table_name}.created_on desc" | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |       @containers = [ Course.includes(:attachments).reorder(sort).find(@course.id)] | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |       show_attachments @containers | 
			
		
	
		
			
				
					|  |  |  |  |     end | 
			
		
	
		
			
				
					|  |  |  |  |     respond_to do |format| | 
			
		
	
		
			
				
					|  |  |  |  |       format.js | 
			
		
	
		
			
				
					|  |  |  |  |     end | 
			
		
	
		
			
				
					|  |  |  |  |   end | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   def show_attachments obj | 
			
		
	
		
			
				
					|  |  |  |  |     @attachments = [] | 
			
		
	
		
			
				
					|  |  |  |  |     obj.each do |container| | 
			
		
	
		
			
				
					|  |  |  |  |       @attachments += container.attachments | 
			
		
	
		
			
				
					|  |  |  |  |     end | 
			
		
	
		
			
				
					|  |  |  |  |     @all_attachments = User.current.admin? ? @attachments : visable_attachemnts(@attachments) | 
			
		
	
		
			
				
					|  |  |  |  |     @limit = 10 | 
			
		
	
		
			
				
					|  |  |  |  |     @feedback_count = @all_attachments.count | 
			
		
	
		
			
				
					|  |  |  |  |     @feedback_pages = Paginator.new @feedback_count, @limit, params['page'] | 
			
		
	
		
			
				
					|  |  |  |  |     @offset ||= @feedback_pages.offset | 
			
		
	
		
			
				
					|  |  |  |  |     #@curse_attachments_all = @all_attachments[@offset, @limit] | 
			
		
	
		
			
				
					|  |  |  |  |     @obj_attachments = paginateHelper @all_attachments,10 | 
			
		
	
		
			
				
					|  |  |  |  |   end | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   def tag_save | 
			
		
	
		
			
				
					|  |  |  |  |     @select_tag_name = params[:tag_for_save][:tag_name] | 
			
		
	
		
			
				
					|  |  |  |  |     @tags = params[:tag_for_save][:name] | 
			
		
	
	
		
			
				
					|  |  |  | 
 |