diff options
Diffstat (limited to 'app/controllers/nodes_controller.rb')
| -rw-r--r-- | app/controllers/nodes_controller.rb | 49 |
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] |
