From 0ee17f52f8ad337c1240b4c55dbd8f6c6c74dc90 Mon Sep 17 00:00:00 2001 From: Stefan Wintermeyer Date: Wed, 16 Jan 2013 16:32:59 +0100 Subject: Fixed routes and breadcrumbs. #106 --- app/controllers/call_routes_controller.rb | 19 +++++++++----- app/controllers/route_elements_controller.rb | 36 +++++++++++++++++++------- app/models/call_route.rb | 7 +++++ app/models/route_element.rb | 5 ++++ app/views/route_elements/_form.html.haml | 2 +- app/views/route_elements/_form_core.html.haml | 1 - app/views/route_elements/_index_core.html.haml | 4 +-- app/views/route_elements/index.html.haml | 2 +- app/views/route_elements/show.html.haml | 5 +--- 9 files changed, 55 insertions(+), 26 deletions(-) (limited to 'app') diff --git a/app/controllers/call_routes_controller.rb b/app/controllers/call_routes_controller.rb index 631339b..41abe6d 100644 --- a/app/controllers/call_routes_controller.rb +++ b/app/controllers/call_routes_controller.rb @@ -1,14 +1,15 @@ class CallRoutesController < ApplicationController + load_and_authorize_resource :call_route + + before_filter :spread_breadcrumbs + def index - @call_routes = CallRoute.all end def show - @call_route = CallRoute.find(params[:id]) end def new - @call_route = CallRoute.new end def create @@ -21,11 +22,9 @@ class CallRoutesController < ApplicationController end def edit - @call_route = CallRoute.find(params[:id]) end def update - @call_route = CallRoute.find(params[:id]) if @call_route.update_attributes(params[:call_route]) redirect_to @call_route, :notice => t('call_routes.controller.successfuly_updated') else @@ -34,8 +33,16 @@ class CallRoutesController < ApplicationController end def destroy - @call_route = CallRoute.find(params[:id]) @call_route.destroy redirect_to call_routes_url, :notice => t('call_routes.controller.successfuly_destroyed') end + + private + def spread_breadcrumbs + add_breadcrumb t("call_routes.index.page_title"), call_routes_path + if @call_route && !@call_route.new_record? + add_breadcrumb @call_route, call_route_path(@call_route) + end + end + end diff --git a/app/controllers/route_elements_controller.rb b/app/controllers/route_elements_controller.rb index 595a20d..699fcc6 100644 --- a/app/controllers/route_elements_controller.rb +++ b/app/controllers/route_elements_controller.rb @@ -1,41 +1,57 @@ class RouteElementsController < ApplicationController + load_and_authorize_resource :call_route + load_and_authorize_resource :route_element, :through => [:call_route] + + before_filter :spread_breadcrumbs + def index - @route_elements = RouteElement.all + @route_elements = @call_route.route_elements end def show - @route_element = RouteElement.find(params[:id]) + @route_element = @call_route.route_elements.find(params[:id]) end def new - @route_element = RouteElement.new + @route_element = @call_route.route_elements.build end def create - @route_element = RouteElement.new(params[:route_element]) + @route_element = @call_route.route_elements.build(params[:route_element]) if @route_element.save - redirect_to @route_element, :notice => t('route_elements.controller.successfuly_created') + redirect_to [@call_route, @route_element], :notice => t('route_elements.controller.successfuly_created') else render :new end end def edit - @route_element = RouteElement.find(params[:id]) + @route_element = @call_route.route_elements.find(params[:id]) end def update - @route_element = RouteElement.find(params[:id]) + @route_element = @call_route.route_elements.find(params[:id]) if @route_element.update_attributes(params[:route_element]) - redirect_to @route_element, :notice => t('route_elements.controller.successfuly_updated') + redirect_to [@call_route, @route_element], :notice => t('route_elements.controller.successfuly_updated') else render :edit end end def destroy - @route_element = RouteElement.find(params[:id]) + @route_element = @call_route.route_elements.find(params[:id]) @route_element.destroy - redirect_to route_elements_url, :notice => t('route_elements.controller.successfuly_destroyed') + redirect_to call_route_route_elements_path(@call_route), :notice => t('route_elements.controller.successfuly_destroyed') end + + private + def spread_breadcrumbs + add_breadcrumb t("call_routes.index.page_title"), call_routes_path + add_breadcrumb @call_route, call_route_path(@call_route) + add_breadcrumb t("route_elements.index.page_title"), call_route_route_elements_path(@call_route) + if @route_element && !@route_element.new_record? + add_breadcrumb @route_element, call_route_route_element_path(@call_route, @route_element) + end + end + end diff --git a/app/models/call_route.rb b/app/models/call_route.rb index eba247c..de0f68a 100644 --- a/app/models/call_route.rb +++ b/app/models/call_route.rb @@ -2,4 +2,11 @@ class CallRoute < ActiveRecord::Base attr_accessible :table, :name, :endpoint_type, :endpoint_id, :position has_many :route_elements, :dependent => :destroy + + validates :name, + :presence => true + + def to_s + name.to_s + end end diff --git a/app/models/route_element.rb b/app/models/route_element.rb index e845f24..11bb54a 100644 --- a/app/models/route_element.rb +++ b/app/models/route_element.rb @@ -2,4 +2,9 @@ class RouteElement < ActiveRecord::Base attr_accessible :call_route_id, :var_in, :var_out, :pattern, :replacement, :action, :mandatory, :position belongs_to :call_route + + def to_s + "#{var_in} #{var_out}" + end + end diff --git a/app/views/route_elements/_form.html.haml b/app/views/route_elements/_form.html.haml index cfa4c6b..8feacaa 100644 --- a/app/views/route_elements/_form.html.haml +++ b/app/views/route_elements/_form.html.haml @@ -1,4 +1,4 @@ -= simple_form_for(@route_element) do |f| += simple_form_for([@call_route, @route_element]) do |f| = f.error_notification = render "form_core", :f => f diff --git a/app/views/route_elements/_form_core.html.haml b/app/views/route_elements/_form_core.html.haml index 7697cb0..133d1df 100644 --- a/app/views/route_elements/_form_core.html.haml +++ b/app/views/route_elements/_form_core.html.haml @@ -1,5 +1,4 @@ .inputs - = f.input :call_route_id, :label => t('route_elements.form.call_route_id.label'), :hint => conditional_hint('route_elements.form.call_route_id.hint') = f.input :var_in, :label => t('route_elements.form.var_in.label'), :hint => conditional_hint('route_elements.form.var_in.hint') = f.input :var_out, :label => t('route_elements.form.var_out.label'), :hint => conditional_hint('route_elements.form.var_out.hint') = f.input :pattern, :label => t('route_elements.form.pattern.label'), :hint => conditional_hint('route_elements.form.pattern.hint') diff --git a/app/views/route_elements/_index_core.html.haml b/app/views/route_elements/_index_core.html.haml index 63665fd..c1df665 100644 --- a/app/views/route_elements/_index_core.html.haml +++ b/app/views/route_elements/_index_core.html.haml @@ -1,6 +1,5 @@ %table %tr - %th= t('route_elements.index.call_route_id') %th= t('route_elements.index.var_in') %th= t('route_elements.index.var_out') %th= t('route_elements.index.pattern') @@ -12,7 +11,6 @@ - reset_cycle - for route_element in route_elements %tr{:class => cycle('odd', 'even')} - %td= route_element.call_route_id %td= route_element.var_in %td= route_element.var_out %td= route_element.pattern @@ -20,4 +18,4 @@ %td= route_element.action %td= route_element.mandatory %td= route_element.position - =render :partial => 'shared/index_view_edit_destroy_part', :locals => {:child => route_element} \ No newline at end of file + =render :partial => 'shared/index_view_edit_destroy_part', :locals => {:parent => @call_route, :child => route_element} \ No newline at end of file diff --git a/app/views/route_elements/index.html.haml b/app/views/route_elements/index.html.haml index b05236b..8a6f7bc 100644 --- a/app/views/route_elements/index.html.haml +++ b/app/views/route_elements/index.html.haml @@ -3,4 +3,4 @@ - if @route_elements && @route_elements.count > 0 = render "index_core", :route_elements => @route_elements -= render :partial => 'shared/create_link', :locals => {:child_class => RouteElement} \ No newline at end of file += render :partial => 'shared/create_link', :locals => {:parent => @call_route, :child_class => RouteElement} \ No newline at end of file diff --git a/app/views/route_elements/show.html.haml b/app/views/route_elements/show.html.haml index a439353..8e41f80 100644 --- a/app/views/route_elements/show.html.haml +++ b/app/views/route_elements/show.html.haml @@ -1,8 +1,5 @@ - title t("route_elements.show.page_title") -%p - %strong= t('route_elements.show.call_route_id') + ":" - = @route_element.call_route_id %p %strong= t('route_elements.show.var_in') + ":" = @route_element.var_in @@ -25,4 +22,4 @@ %strong= t('route_elements.show.position') + ":" = @route_element.position -= render :partial => 'shared/show_edit_destroy_part', :locals => { :child => @route_element } \ No newline at end of file += render :partial => 'shared/show_edit_destroy_part', :locals => {:parent => @call_route, :child => @route_element } \ No newline at end of file -- cgit v1.2.3