From 6ad3102046c931ed11797938e3d3b123d925725a Mon Sep 17 00:00:00 2001 From: Manasa Kashyap <43354059+Manasa2850@users.noreply.github.com> Date: Thu, 3 Jun 2021 17:08:46 +0530 Subject: [PATCH] Created a locked tag which can be added to notes by mods / admin (#9709) * adding locked tag * normal users can't delete locked tag * changed error message * added javascript function for locking --- app/assets/javascripts/tagging.js | 2 +- app/controllers/tag_controller.rb | 5 ++++- app/views/notes/show.html.erb | 4 ++++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/tagging.js b/app/assets/javascripts/tagging.js index 5aeab0340b..e6e8a82abd 100644 --- a/app/assets/javascripts/tagging.js +++ b/app/assets/javascripts/tagging.js @@ -140,7 +140,7 @@ function promptTag(val) { break; default: - addTag(expr); + addTag(val); break; } diff --git a/app/controllers/tag_controller.rb b/app/controllers/tag_controller.rb index 5cec2888f2..007708f0a6 100644 --- a/app/controllers/tag_controller.rb +++ b/app/controllers/tag_controller.rb @@ -359,7 +359,7 @@ def delete node_tag = NodeTag.where(nid: params[:nid], tid: params[:tid]).first node = Node.where(nid: params[:nid]).first # only admins, mods, and tag authors can delete other peoples' tags - if node_tag.uid == current_user.uid || logged_in_as(['admin', 'moderator']) || node.uid == current_user.uid + if node_tag.uid == current_user.uid || logged_in_as(['admin', 'moderator']) || (node.uid == current_user.uid && node_tag.name != "locked") tag = Tag.joins(:node_tag) .select('term_data.name') @@ -385,6 +385,9 @@ def delete end end end + elsif node_tag.name == "locked" + flash[:error] = "Only admins can delete the locked tag." + redirect_to Node.find_by(nid: params[:nid]).path else flash[:error] = I18n.t('tag_controller.must_own_tag_to_delete') redirect_to Node.find_by(nid: params[:nid]).path diff --git a/app/views/notes/show.html.erb b/app/views/notes/show.html.erb index 43fff6025d..eee58de794 100644 --- a/app/views/notes/show.html.erb +++ b/app/views/notes/show.html.erb @@ -86,6 +86,10 @@ <% end %> + <% if current_user && ( current_user.role == "admin" || current_user.role == "moderator") && !(@node.has_tag('locked')) %> + Lock Note + <% end %> + <% if current_user && ( current_user.role == "admin" || current_user.role == "moderator" || current_user.id == @node.id || current_user.is_coauthor?(@node) ) &&