diff --git a/app/controllers/tags_controller.rb b/app/controllers/tags_controller.rb
index 253faa2b1..e0cb8af8e 100644
--- a/app/controllers/tags_controller.rb
+++ b/app/controllers/tags_controller.rb
@@ -230,6 +230,53 @@ class TagsController < ApplicationController
end
end
+ #更新某个tag名称
+ def update_tag_name
+ @tag_name = params[:tagName]
+ @rename_tag_name = params[:renameName]
+ @taggable_id = params[:taggableId]
+ @taggable_type = numbers_to_object_type(params[:taggableType])
+
+
+ @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
+ end
+ #删除原来的对应的taggings的记录
+ unless @taggings.nil?
+ @taggings.delete
+ 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
+ end
+ respond_to do |format|
+ format.js
+ end
+ end
+
def tag_save
@select_tag_name = params[:tag_for_save][:tag_name]
@tags = params[:tag_for_save][:name]
diff --git a/app/views/files/index.html.erb b/app/views/files/index.html.erb
index aefa1a5a9..fa15c1fc7 100644
--- a/app/views/files/index.html.erb
+++ b/app/views/files/index.html.erb
@@ -223,6 +223,54 @@
});
}
+ var tagNameHtml; //当前双击的链接的父节点的html
+ var tagName; //标签的值
+ var parentCssBorder; //当前双击的链接的父节点
+ var ele; //当前双击的链接
+ var tagId; //标签的id
+ var taggableType; //被标签的类型
+ function rename_tag(domEle,name,id,type){
+ if(domEle.children().get(0) != undefined ){ //已经是编辑框的情况下不要动
+ return;
+ }
+ tagNameHtml = domEle.parent().html()
+ tagName = name;
+ parentCssBorder = domEle.parent().css("border");
+ ele = domEle;
+ tagId = id;
+ taggableType = type;
+ domEle.html('');
+ domEle.parent().css("border","1px solid #ffffff");
+ $("#renameTagName").focus();
+ }
+ //监听所有的单击事件
+ $(document.body).click(function(e){
+ node = document.elementFromPoint(e.clientX, e.clientY);
+ if(node.tagName == "INPUT"){ //如果是输入框的聚焦,那么就不要进行下去了
+ return;
+ }
+ if($("#renameTagName")[0] != undefined ){//存在renameTagName,则处于编辑状态
+ if($("#renameTagName").val().trim() == tagName){ //如果值一样,则恢复原来的状态
+ ele.parent().css("border","");
+ ele.parent().html(tagNameHtml);
+
+ }else{ //否则就要更新tag名称了
+ if(confirm("是否将标签改为 "+ $("#renameTagName").val().trim())){
+ $.post(
+ '<%= update_tag_name_path %>',
+ {"taggableId":tagId,"taggableType":taggableType,"tagName":tagName,"renameName":$("#renameTagName").val().trim()}
+// function(data){
+// ele.parent().css("border","");
+// ele.parent().html(tagNameHtml);
+// }
+ )
+ }else{
+ ele.parent().css("border","");
+ ele.parent().html(tagNameHtml);
+ }
+ }
+ }
+ });
diff --git a/app/views/tags/_tag_list.html.erb b/app/views/tags/_tag_list.html.erb
index b512f1ef3..49c9b2351 100644
--- a/app/views/tags/_tag_list.html.erb
+++ b/app/views/tags/_tag_list.html.erb
@@ -2,7 +2,8 @@
<% if @tags.size > 0 %>
<% @tags.each do |tag| %>
- <%= link_to tag, :controller => "tags", :action => "index", :q => tag, :object_flag => object_flag, :obj_id => obj.id %>
+ <%#= link_to tag, :controller => "tags", :action => "index", :q => tag, :object_flag => object_flag, :obj_id => obj.id %>
+ <%= tag %>
<% case object_flag %>
<% when '10' %>
diff --git a/config/routes.rb b/config/routes.rb
index 1df7b0d2f..1d2393764 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -884,6 +884,7 @@ RedmineApp::Application.routes.draw do
match 'tags/remove_tag', :as=>"remove_tag"
match 'tags/remove_tag_new', :as=>"remove_tag_new"
match 'tags/tag_save', :as => "save_tag"
+ match 'tags/update_tag_name',:as => "update_tag_name"
match 'words/add_brief_introdution'