From ddf928515cbe0707da232d1bd72e2ceecb7f1180 Mon Sep 17 00:00:00 2001 From: evazion Date: Mon, 16 Dec 2019 18:44:34 -0600 Subject: [PATCH] wiki pages: allow members to rename, delete, and undelete wikis. --- app/controllers/wiki_pages_controller.rb | 6 ++---- app/views/wiki_pages/_form.html.erb | 15 ++++----------- app/views/wiki_pages/_secondary_links.html.erb | 11 ++++++----- test/functional/wiki_pages_controller_test.rb | 5 ----- 4 files changed, 12 insertions(+), 25 deletions(-) diff --git a/app/controllers/wiki_pages_controller.rb b/app/controllers/wiki_pages_controller.rb index 607e35a30..d2c9ff751 100644 --- a/app/controllers/wiki_pages_controller.rb +++ b/app/controllers/wiki_pages_controller.rb @@ -1,7 +1,6 @@ class WikiPagesController < ApplicationController respond_to :html, :xml, :json, :js before_action :member_only, :except => [:index, :search, :show, :show_or_new] - before_action :builder_only, :only => [:destroy] before_action :normalize_search_params, :only => [:index] layout "sidebar" @@ -89,9 +88,8 @@ class WikiPagesController < ApplicationController end def wiki_page_params(context) - permitted_params = %i[body other_names other_names_string] - permitted_params += %i[is_locked is_deleted] if CurrentUser.is_builder? - permitted_params += %i[title] if context == :create || CurrentUser.is_builder? + permitted_params = %i[title body other_names other_names_string is_deleted] + permitted_params += %i[is_locked] if CurrentUser.is_builder? params.fetch(:wiki_page, {}).permit(permitted_params) end diff --git a/app/views/wiki_pages/_form.html.erb b/app/views/wiki_pages/_form.html.erb index ad1c285c8..5ee37885c 100644 --- a/app/views/wiki_pages/_form.html.erb +++ b/app/views/wiki_pages/_form.html.erb @@ -2,23 +2,16 @@ <%= error_messages_for("wiki_page") %> <%= simple_form_for(@wiki_page, url: wiki_page_path(@wiki_page.id)) do |f| %> - <% if CurrentUser.is_builder? %> - <%= f.input :title, error: false, input_html: { data: { autocomplete: "tag" } }, hint: "Change to rename this wiki page. Move the tag and update any wikis linking to this page first." %> - <% else %> -

<%= @wiki_page.pretty_title %>

- <% end %> - + <%= f.input :title, error: false, input_html: { data: { autocomplete: "tag" } }, hint: "Change to rename this wiki page. Update any wikis linking to this page first." %> <%= f.input :other_names_string, as: :text, input_html: { size: "30x1" }, label: "Other names (#{link_to_wiki "help", "help:translated_tags"})".html_safe, hint: "Names used for this tag on other sites such as Pixiv. Separate with spaces." %> <%= dtext_field "wiki_page", "body" %> - <% if CurrentUser.is_builder? && @wiki_page.is_deleted? %> - <%= f.input :is_deleted, :label => "Deleted", :hint => "Uncheck to restore this wiki page" %> + <% if CurrentUser.is_builder? %> + <%= f.input :is_locked, label: "Locked", hint: "Locked wikis can only be edited by Builders." %> <% end %> - <% if CurrentUser.is_builder? %> - <%= f.input :is_locked, :label => "Locked" %> - <% end %> + <%= f.input :is_deleted, label: "Deleted", hint: "Check to mark this wiki page as deleted." %> <%= f.submit "Submit" %> <%= dtext_preview_button "wiki_page", "body" %> diff --git a/app/views/wiki_pages/_secondary_links.html.erb b/app/views/wiki_pages/_secondary_links.html.erb index bbc900785..e2c316513 100644 --- a/app/views/wiki_pages/_secondary_links.html.erb +++ b/app/views/wiki_pages/_secondary_links.html.erb @@ -15,11 +15,12 @@ <%= subnav_link_to "History", wiki_page_versions_path(:search => {:wiki_page_id => @wiki_page.id}) %> <% if CurrentUser.is_member? %> <%= subnav_link_to "Edit", edit_wiki_page_path(@wiki_page.id), "data-shortcut": "e" %> - <% end %> - <% if CurrentUser.is_builder? && @wiki_page.is_deleted? %> - <%= subnav_link_to "Undelete", wiki_page_path(@wiki_page.id), remote: true, method: :put, "data-params": "wiki_page[is_deleted]=false", "data-shortcut": "shift+d" %> - <% elsif CurrentUser.is_builder? && !@wiki_page.is_deleted? %> - <%= subnav_link_to "Delete", wiki_page_path(@wiki_page.id), remote: true, method: :put, "data-params": "wiki_page[is_deleted]=true", "data-shortcut": "shift+d" %> + + <% if @wiki_page.is_deleted? %> + <%= subnav_link_to "Undelete", wiki_page_path(@wiki_page.id), remote: true, method: :put, "data-params": "wiki_page[is_deleted]=false", "data-shortcut": "shift+d" %> + <% else %> + <%= subnav_link_to "Delete", wiki_page_path(@wiki_page.id), remote: true, method: :put, "data-params": "wiki_page[is_deleted]=true", "data-shortcut": "shift+d" %> + <% end %> <% end %> <% elsif @wiki_page_version %>
  • |
  • diff --git a/test/functional/wiki_pages_controller_test.rb b/test/functional/wiki_pages_controller_test.rb index 4a28c5a4f..6d495f756 100644 --- a/test/functional/wiki_pages_controller_test.rb +++ b/test/functional/wiki_pages_controller_test.rb @@ -168,11 +168,6 @@ class WikiPagesControllerTest < ActionDispatch::IntegrationTest put_auth wiki_page_path(@wiki_page), @mod, params: { wiki_page: { title: "bar" }} assert_match(/still has 42 posts/, flash[:notice]) end - - should "not allow non-Builders to delete wiki pages" do - put_auth wiki_page_path(@wiki_page), @user, params: {wiki_page: { is_deleted: true }} - assert_equal(false, @wiki_page.reload.is_deleted?) - end end context "destroy action" do