Wiki: base implemetation logic
This commit is contained in:
parent
eacea15a21
commit
4c1b8558df
|
@ -1,61 +1,42 @@
|
|||
class WikisController < ApplicationController
|
||||
before_filter :project
|
||||
layout "project"
|
||||
respond_to :html
|
||||
|
||||
def show
|
||||
@wiki = @project.wikis.find_by_slug(params[:id])
|
||||
respond_with(@wiki)
|
||||
end
|
||||
|
||||
def new
|
||||
@wiki = Wiki.new
|
||||
|
||||
@wiki = @project.wikis.where(:slug => params[:id]).order("created_at").last
|
||||
respond_to do |format|
|
||||
format.html # new.html.erb
|
||||
format.json { render json: @wiki }
|
||||
end
|
||||
end
|
||||
|
||||
def edit
|
||||
@wiki = Wiki.find(params[:id])
|
||||
end
|
||||
|
||||
def create
|
||||
@wiki = Wiki.new(params[:wiki])
|
||||
|
||||
respond_to do |format|
|
||||
if @wiki.save
|
||||
format.html { redirect_to @wiki, notice: 'Wiki was successfully created.' }
|
||||
format.json { render json: @wiki, status: :created, location: @wiki }
|
||||
if @wiki
|
||||
format.html
|
||||
else
|
||||
format.html { render action: "new" }
|
||||
format.json { render json: @wiki.errors, status: :unprocessable_entity }
|
||||
@wiki = @project.wikis.new(:slug => params[:id])
|
||||
format.html { render "edit" }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def update
|
||||
@wiki = Wiki.find(params[:id])
|
||||
def edit
|
||||
@wiki = @project.wikis.where(:slug => params[:id]).order("created_at").last
|
||||
@wiki = Wiki.regenerate_from @wiki
|
||||
end
|
||||
|
||||
def create
|
||||
@wiki = @project.wikis.new(params[:wiki])
|
||||
|
||||
respond_to do |format|
|
||||
if @wiki.update_attributes(params[:wiki])
|
||||
format.html { redirect_to @wiki, notice: 'Wiki was successfully updated.' }
|
||||
format.json { head :no_content }
|
||||
if @wiki.save
|
||||
format.html { redirect_to [@project, @wiki], notice: 'Wiki was successfully updated.' }
|
||||
else
|
||||
format.html { render action: "edit" }
|
||||
format.json { render json: @wiki.errors, status: :unprocessable_entity }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
@wiki = Wiki.find(params[:id])
|
||||
@wiki = @project.wikis.find(params[:id])
|
||||
@wiki.destroy
|
||||
|
||||
respond_to do |format|
|
||||
format.html { redirect_to wikis_url }
|
||||
format.json { head :no_content }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -2,10 +2,9 @@ class Wiki < ActiveRecord::Base
|
|||
belongs_to :project
|
||||
|
||||
validates :content, :title, :presence => true
|
||||
validates :title, :length => 1..250,
|
||||
:uniqueness => {:scope => :project_id, :case_sensitive => false}
|
||||
validates :title, :length => 1..250
|
||||
|
||||
before_save :set_slug
|
||||
before_update :set_slug
|
||||
|
||||
|
||||
def to_param
|
||||
|
@ -17,4 +16,17 @@ class Wiki < ActiveRecord::Base
|
|||
def set_slug
|
||||
self.slug = self.title.parameterize
|
||||
end
|
||||
|
||||
class << self
|
||||
def regenerate_from wiki
|
||||
regenerated_field = [:slug, :content, :title]
|
||||
|
||||
new_wiki = Wiki.new
|
||||
regenerated_field.each do |field|
|
||||
new_wiki.send("#{field}=", wiki.send(field))
|
||||
end
|
||||
new_wiki
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
|
|
@ -21,5 +21,5 @@
|
|||
Wall
|
||||
|
||||
- if @project.wiki_enabled
|
||||
-#= link_to project_wikis_path(@project), :class => current_page?(:controller => "projects", :action => "wiki", :id => @project) ? "current" : nil do
|
||||
= link_to project_wiki_path(@project, :index), :class => current_page?(:controller => "projects", :action => "wiki", :id => @project) ? "current" : nil do
|
||||
Wiki
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
= form_for @wiki do |f|
|
||||
= form_for [@project, @wiki] do |f|
|
||||
-if @wiki.errors.any?
|
||||
#error_explanation
|
||||
%h2= "#{pluralize(@wiki.errors.count, "error")} prohibited this wiki from being saved:"
|
||||
|
@ -9,6 +9,7 @@
|
|||
.field
|
||||
= f.label :title
|
||||
= f.text_field :title
|
||||
= f.hidden_field :slug
|
||||
.field
|
||||
= f.label :content
|
||||
= f.text_area :content
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
%h1 Editing wiki
|
||||
%h1 Editing page
|
||||
|
||||
= render 'form'
|
||||
|
||||
= link_to 'Show', @wiki
|
||||
\|
|
||||
= link_to 'Back', wikis_path
|
||||
= link_to 'Show', [@project, @wiki]
|
||||
|
|
|
@ -1,21 +0,0 @@
|
|||
%h1 Listing wikis
|
||||
|
||||
%table
|
||||
%tr
|
||||
%th Title
|
||||
%th Content
|
||||
%th
|
||||
%th
|
||||
%th
|
||||
|
||||
- @wikis.each do |wiki|
|
||||
%tr
|
||||
%td= wiki.title
|
||||
%td= wiki.content
|
||||
%td= link_to 'Show', wiki
|
||||
%td= link_to 'Edit', edit_wiki_path(wiki)
|
||||
%td= link_to 'Destroy', wiki, :confirm => 'Are you sure?', :method => :delete
|
||||
|
||||
%br
|
||||
|
||||
= link_to 'New Wiki', new_wiki_path
|
|
@ -1,5 +0,0 @@
|
|||
%h1 New wiki
|
||||
|
||||
= render 'form'
|
||||
|
||||
= link_to 'Back', wikis_path
|
|
@ -56,7 +56,8 @@ Gitlab::Application.routes.draw do
|
|||
get "files"
|
||||
end
|
||||
|
||||
resources :wikis, :only => [:show, :edit, :destroy]
|
||||
resources :wikis, :only => [:show, :edit, :destroy, :create]
|
||||
|
||||
resource :repository do
|
||||
member do
|
||||
get "branches"
|
||||
|
|
Loading…
Reference in a new issue