wikis: fix exception when wiki doesn't have a tag.

Fix a nil reference exception in the sidebar when a wiki page doesn't
belong to a tag.

Also hide the options sidebar on the new wiki page since none of the
options are relevant when creating a new wiki.
This commit is contained in:
evazion
2022-09-12 21:16:52 -05:00
parent e1fb219738
commit 0267e4e3d7
2 changed files with 26 additions and 6 deletions

View File

@@ -2,19 +2,31 @@
<%= render "posts/partials/index/blacklist" %>
<%= render "wiki_pages/recent_changes" %>
<% if @wiki_page.present? %>
<% if @wiki_page.present? && !@wiki_page.new_record? %>
<h2>Options</h2>
<ul>
<% unless @wiki_page.is_meta_wiki? %>
<li><%= link_to "Tag History", tag_versions_path(search: { tag_id: @wiki_page.tag.id }) %></li>
<li><%= link_to "Post History", post_versions_path(search: { changed_tags: @wiki_page.title }) %></li>
<% if @wiki_page.tag.present? %>
<li><%= link_to "Tag History", tag_versions_path(search: { tag_id: @wiki_page.tag&.id }) %></li>
<% end %>
<% if @wiki_page.title.present? %>
<li><%= link_to "Post History", post_versions_path(search: { changed_tags: @wiki_page.title }) %></li>
<% end %>
<% end %>
<li><%= link_to "Wiki History", wiki_page_versions_path(search: { wiki_page_id: @wiki_page.id }) %></li>
<% if Danbooru.config.forum_enabled?.to_s.truthy? %>
<% if @wiki_page.id.present? %>
<li><%= link_to "Wiki History", wiki_page_versions_path(search: { wiki_page_id: @wiki_page.id }) %></li>
<% end %>
<% if Danbooru.config.forum_enabled?.to_s.truthy? && @wiki_page.title.present? %>
<li><%= link_to "Discussions", forum_posts_path(search: { linked_to: @wiki_page.title }) %></li>
<% end %>
<li><%= link_to "What Links Here", wiki_pages_path(search: { linked_to: @wiki_page.title }) %></li>
<% if @wiki_page.title.present? %>
<li><%= link_to "What Links Here", wiki_pages_path(search: { linked_to: @wiki_page.title }) %></li>
<% end %>
</ul>
<% end %>
<% end %>

View File

@@ -97,6 +97,14 @@ class WikiPagesControllerTest < ActionDispatch::IntegrationTest
assert_response :success
end
should "render for a wiki without a tag" do
@wiki_page = create(:wiki_page, title: "help:foo")
get wiki_page_path(@wiki_page)
assert(@wiki_page.tag.nil?)
assert_response :success
end
should "show the 'does not exist' page for a nonexistent title" do
get wiki_page_path("what")