summaryrefslogtreecommitdiff
path: root/app/controllers/nodes_controller.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers/nodes_controller.rb')
-rw-r--r--app/controllers/nodes_controller.rb49
1 files changed, 34 insertions, 15 deletions
diff --git a/app/controllers/nodes_controller.rb b/app/controllers/nodes_controller.rb
index 4f72744..494887d 100644
--- a/app/controllers/nodes_controller.rb
+++ b/app/controllers/nodes_controller.rb
@@ -4,8 +4,8 @@ class NodesController < ApplicationController
4 4
5 layout 'admin' 5 layout 'admin'
6 6
7 before_filter :login_required 7 before_action :login_required
8 before_filter :find_node, :only => [ 8 before_action :find_node, :only => [
9 :show, 9 :show,
10 :edit, 10 :edit,
11 :update, 11 :update,
@@ -15,16 +15,17 @@ class NodesController < ApplicationController
15 ] 15 ]
16 16
17 def index 17 def index
18 @nodes = Node.root.descendants.paginate( 18 @nodes = Node.root.descendants.includes(:head, :draft)
19 :include => [:head, :draft], 19 .order('id DESC')
20 :page => params[:page], 20 .paginate(:page => params[:page], :per_page => 25)
21 :per_page => 25,
22 :order => 'id DESC'
23 )
24 end 21 end
25 22
26 def new 23 def new
27 @node = Node.new params[:node] 24 @node = Node.new node_params
25 if params.has_key?(:parent_id)
26 @parent_id = params[:parent_id]
27 @parent_name = Node.find(@parent_id).title
28 end
28 end 29 end
29 30
30 def create 31 def create
@@ -33,9 +34,16 @@ class NodesController < ApplicationController
33 @node = Node.new 34 @node = Node.new
34 @node.parent_id = find_parent 35 @node.parent_id = find_parent
35 @node.slug = params[:title].parameterize.to_s 36 @node.slug = params[:title].parameterize.to_s
36 37
37 if @node.save 38 if @node.save
38 @node.draft.update_attributes(:title => params[:title]) 39 @node.draft.update(:title => params[:title])
40 case params[:kind]
41 when "update"
42 @node.draft.tag_list.add("update")
43 when "press_release"
44 @node.draft.tag_list.add("update", "pressemitteilung")
45 end
46 @node.draft.save!
39 redirect_to(edit_node_path(@node)) 47 redirect_to(edit_node_path(@node))
40 else 48 else
41 render :new 49 render :new
@@ -44,6 +52,7 @@ class NodesController < ApplicationController
44 52
45 def show 53 def show
46 node = Node.find(params[:id]) 54 node = Node.find(params[:id])
55 node.wipe_draft!
47 @page = node.draft || node.head 56 @page = node.draft || node.head
48 end 57 end
49 58
@@ -53,7 +62,7 @@ class NodesController < ApplicationController
53 rescue LockedByAnotherUser => e 62 rescue LockedByAnotherUser => e
54 flash[:error] = e.message 63 flash[:error] = e.message
55 if request.referer 64 if request.referer
56 redirect_to :back 65 redirect_to request.referer || node_path(@node)
57 else 66 else
58 redirect_to node_path(@node) 67 redirect_to node_path(@node)
59 end 68 end
@@ -61,10 +70,10 @@ class NodesController < ApplicationController
61 end 70 end
62 71
63 def update 72 def update
64 @node.update_attributes(params[:node]) 73 @node.update(node_params)
65 @draft = @node.find_or_create_draft current_user 74 @draft = @node.find_or_create_draft current_user
66 @draft.tag_list = params[:tag_list] 75 @draft.tag_list = params[:tag_list]
67 if @draft.update_attributes( params[:page] ) 76 if @draft.update( page_params )
68 flash[:notice] = "Draft has been saved: #{Time.now}" 77 flash[:notice] = "Draft has been saved: #{Time.now}"
69 respond_to do |format| 78 respond_to do |format|
70 format.html { redirect_to edit_node_path(@node) } 79 format.html { redirect_to edit_node_path(@node) }
@@ -82,7 +91,7 @@ class NodesController < ApplicationController
82 def publish 91 def publish
83 @node.publish_draft! 92 @node.publish_draft!
84 flash[:notice] = "Draft has been published" 93 flash[:notice] = "Draft has been published"
85 redirect_to node_path 94 redirect_to node_path(@node)
86 end 95 end
87 96
88 def unlock 97 def unlock
@@ -96,6 +105,14 @@ class NodesController < ApplicationController
96 end 105 end
97 106
98 private 107 private
108
109 def node_params
110 params.fetch(:node, {}).permit(:slug, :parent_id, :staged_slug, :staged_parent_id)
111 end
112
113 def page_params
114 params.fetch(:page, {}).permit(:title, :abstract, :body, :template_name, :published_at, :user_id)
115 end
99 116
100 def find_node 117 def find_node
101 @node = Node.find(params[:id]) 118 @node = Node.find(params[:id])
@@ -107,6 +124,8 @@ class NodesController < ApplicationController
107 Node.root.id 124 Node.root.id
108 when "update" 125 when "update"
109 Update.find_or_create_parent.id 126 Update.find_or_create_parent.id
127 when "press_release"
128 Update.find_or_create_parent.id
110 when "generic" 129 when "generic"
111 if params[:parent_id] && Node.find(params[:parent_id]) 130 if params[:parent_id] && Node.find(params[:parent_id])
112 params[:parent_id] 131 params[:parent_id]