| @@ -154,31 +154,8 @@ class WikiPagesController < ApplicationController | |||||
| def render_wiki_page_or_404 page | def render_wiki_page_or_404 page | ||||
| return head :not_found unless page | return head :not_found unless page | ||||
| if params[:version].present? | |||||
| rev = page.wiki_revisions.find_by(id: params[:version]) | |||||
| return head :not_found unless rev | |||||
| if rev.redirect? | |||||
| return ( | |||||
| redirect_to wiki_page_by_title_path(title: rev.redirect_page.title), | |||||
| status: :moved_permanently) | |||||
| end | |||||
| body = rev.body | |||||
| revision_id = rev.id | |||||
| pred = page.pred_revision_id(revision_id) | |||||
| succ = page.succ_revision_id(revision_id) | |||||
| updated_at = rev.created_at | |||||
| return render json: page.as_json(methods: [:title]) | |||||
| .merge(body:, revision_id:, pred:, succ:, updated_at:) | |||||
| end | |||||
| rev = page.current_revision | |||||
| unless rev | |||||
| return render json: page.as_json(methods: [:title]) | |||||
| .merge(body: nil, revision_id: nil, pred: nil, succ: nil) | |||||
| end | |||||
| rev = find_revision(page) | |||||
| return head :not_found unless rev | |||||
| if rev.redirect? | if rev.redirect? | ||||
| return ( | return ( | ||||
| @@ -196,6 +173,14 @@ class WikiPagesController < ApplicationController | |||||
| .merge(body:, revision_id:, pred:, succ:, updated_at:) | .merge(body:, revision_id:, pred:, succ:, updated_at:) | ||||
| end | end | ||||
| def find_revision page | |||||
| if params[:version].present? | |||||
| page.wiki_revisions.find_by(id: params[:version]) | |||||
| else | |||||
| page.current_revision | |||||
| end | |||||
| end | |||||
| def render_wiki_conflict err | def render_wiki_conflict err | ||||
| render json: { error: 'conflict', message: err.message }, status: :conflict | render json: { error: 'conflict', message: err.message }, status: :conflict | ||||
| end | end | ||||