From 7de45543c4aa3c8679e873d94c9ab6c6f6d88bc2 Mon Sep 17 00:00:00 2001 From: Benjamin Meichsner Date: Wed, 20 May 2009 12:42:01 +0200 Subject: [PATCH] Added page-preview feature to wiki module. --- app/controllers/pages_controller.rb | 35 +++++++++++++---------------- app/views/pages/_body.html.haml | 1 + app/views/pages/_form.html.haml | 6 +++++ app/views/pages/show.html.haml | 2 +- public/stylesheets/main.css | 4 ++++ public/stylesheets/print.css | 4 ++++ public/stylesheets/sass/main.sass | 5 ++++- 7 files changed, 36 insertions(+), 21 deletions(-) create mode 100644 app/views/pages/_body.html.haml diff --git a/app/controllers/pages_controller.rb b/app/controllers/pages_controller.rb index 4ba86794..a5af8b32 100644 --- a/app/controllers/pages_controller.rb +++ b/app/controllers/pages_controller.rb @@ -18,10 +18,8 @@ class PagesController < ApplicationController end end - # GET /pages/new - # GET /pages/new.xml def new - @page = Page.new(:title => params[:title]) + @page = Page.new(:title => params[:title].capitalize.gsub("-", " ")) respond_to do |format| format.html # new.html.erb @@ -29,38 +27,39 @@ class PagesController < ApplicationController end end - # GET /pages/1/edit def edit @page = Page.find(params[:id]) end - # POST /pages - # POST /pages.xml def create @page = current_user.pages.build(params[:page]) - respond_to do |format| + if params[:preview] + render :action => 'new' + else if @page.save flash[:notice] = 'Seite wurde angelegt.' - format.html { redirect_to(wiki_page_path(@page.permalink)) } - format.xml { render :xml => @page, :status => :created, :location => @page } + redirect_to(wiki_page_path(@page.permalink)) else - format.html { render :action => "new" } - format.xml { render :xml => @page.errors, :status => :unprocessable_entity } + render :action => "new" end end end - # PUT /pages/1 - # PUT /pages/1.xml def update @page = Page.find(params[:id]) + @page.attributes = params[:page].merge({:user => current_user}) - if @page.update_attributes(params[:page].merge({:user => current_user})) - flash[:notice] = 'Seite wurde aktualisiert.' - redirect_to wiki_page_path(@page.permalink) + if params[:preview] + @page.attributes = params[:page] + render :action => 'edit' else - render :action => "edit" + if @page.save + flash[:notice] = 'Seite wurde aktualisiert.' + redirect_to wiki_page_path(@page.permalink) + else + render :action => "edit" + end end rescue ActiveRecord::StaleObjectError @@ -68,8 +67,6 @@ class PagesController < ApplicationController redirect_to wiki_page_path(@page.permalink) end - # DELETE /pages/1 - # DELETE /pages/1.xml def destroy @page = Page.find(params[:id]) @page.destroy diff --git a/app/views/pages/_body.html.haml b/app/views/pages/_body.html.haml new file mode 100644 index 00000000..0c57880b --- /dev/null +++ b/app/views/pages/_body.html.haml @@ -0,0 +1 @@ += wikified_body @page.body \ No newline at end of file diff --git a/app/views/pages/_form.html.haml b/app/views/pages/_form.html.haml index b85bdebb..b870d5ec 100644 --- a/app/views/pages/_form.html.haml +++ b/app/views/pages/_form.html.haml @@ -1,3 +1,7 @@ +- if params[:preview] + %h2 Vorschau + #preview= render :partial => 'body' + #wiki-syntax-help{:style => "float:right"} %p %b Schnelle Formatierungshilfe @@ -25,6 +29,8 @@ %br/ = f.text_area :body, :size => "60x30" %p + = f.submit "Vorschau", :name => 'preview' + | = f.submit "Speichern" | = link_to "Abbrechen", :back \ No newline at end of file diff --git a/app/views/pages/show.html.haml b/app/views/pages/show.html.haml index 01744614..483d055a 100644 --- a/app/views/pages/show.html.haml +++ b/app/views/pages/show.html.haml @@ -11,7 +11,7 @@ = "(#{User.find(version.updated_by).nick})" -= wikified_body @page.body += render :partial => 'body' %hr.clear/ %p diff --git a/public/stylesheets/main.css b/public/stylesheets/main.css index 58d64654..26461d6b 100644 --- a/public/stylesheets/main.css +++ b/public/stylesheets/main.css @@ -440,3 +440,7 @@ ul.autocomplete .informal { a.new_wiki_link { color: grey; } + +#preview { + border: 1px dotted grey; + padding: 0 1em; } diff --git a/public/stylesheets/print.css b/public/stylesheets/print.css index 1c15a042..2c81fbcf 100644 --- a/public/stylesheets/print.css +++ b/public/stylesheets/print.css @@ -441,6 +441,10 @@ ul.autocomplete .informal { a.new_wiki_link { color: grey; } +#preview { + border: 1px dotted grey; + padding: 0 1em; } + #logininfo, #header, #footer { display: none; } diff --git a/public/stylesheets/sass/main.sass b/public/stylesheets/sass/main.sass index e5703dfb..67ca6b46 100644 --- a/public/stylesheets/sass/main.sass +++ b/public/stylesheets/sass/main.sass @@ -487,4 +487,7 @@ ul.autocomplete // *** wiki a.new_wiki_link - color: grey \ No newline at end of file + color: grey +#preview + border: 1px dotted grey + padding: 0 1em \ No newline at end of file