#19 トップバーと新規作成ちょっとだけ

This commit is contained in:
2025-06-10 01:23:24 +09:00
parent 39dce3a39f
commit 5b8a560024
10 changed files with 327 additions and 67 deletions
@@ -36,9 +36,6 @@ class PostsController < ApplicationController
# POST /posts
def create
logger.info ">>> thumbnail: #{params[:thumbnail]&.content_type}"
logger.info ">>> filename: #{params[:thumbnail]&.original_filename}"
return head :unauthorized unless current_user
return head :forbidden unless ['admin', 'member'].include?(current_user.role)
@@ -1,6 +1,5 @@
class WikiPagesController < ApplicationController
def show
p params
wiki_page = WikiPage.find_by(title: params[:title])
if wiki_page
render plain: wiki_page.markdown
@@ -9,15 +8,26 @@ class WikiPagesController < ApplicationController
end
end
def create
return head :unauthorized unless current_user
wiki_page = WikiPage.new(title: params[:title], tag_id: params[:tag_id], created_user: current_user, updated_user: current_user)
wiki_page.markdown = params[:markdown], user: current_user
if wiki_page.save
render json: wiki_page, status: :created
else
render json: { errors: wiki_page.errors.full_messages }, status: :unprocessable_entity
end
end
def update
return head :unauthorized unless current_user
title = params[:title]
wiki_page = WikiPage.find_by(title: title)
unless wiki_page
wiki_page = WikiPage.new(title: title, created_user: current_user, updated_user: current_user)
end
wiki_page.markdown = params[:markdown]
wiki_page = WikiPage.find(params[:id])
return head :not_found unless wiki_pages
wiki_page.updated_user = current_user
wiki_page.markdown = params[:markdown], user: current_user
wiki_page.save!
head :ok
end
+14 -11
View File
@@ -2,33 +2,36 @@ require 'gollum-lib'
class WikiPage < ApplicationRecord
WIKI_PATH = Rails.root.join('wiki').to_s
belongs_to :tag, optional: true
belongs_to :created_user, class_name: 'User', foreign_key: 'created_user_id'
belongs_to :updated_user, class_name: 'User', foreign_key: 'updated_user_id'
validates :title, presence: true, length: { maximum: 255 }, uniqueness: true
def markdown
wiki = Gollum::Wiki.new(WIKI_PATH)
page = wiki.page(title)
def body
page = wiki.page("#{ id }.md")
page&.raw_data
end
def markdown= content
wiki = Gollum::Wiki.new(WIKI_PATH)
page = wiki.page(title)
def body= content, user:
page = wiki.page("#{ id }.md")
commit_info = { message: "Update #{ title }",
name: current_user.id,
name: user.id,
email: 'dummy@example.com' }
if page
page.update(content, commit: commit_info)
else
wiki.write_page(title, :markdown, content, commit_info)
wiki.write_page("#{ id }.md", :markdown, content, commit_info)
end
end
private
WIKI_PATH = Rails.root.join('wiki').to_s
def wiki
@wiki ||= Gollum::Wiki.new(WIKI_PATH)
end
end