lib/spiderfw/controller/mixins/visual.rb in spiderfw-0.6.21 vs lib/spiderfw/controller/mixins/visual.rb in spiderfw-0.6.22
- old
+ new
@@ -41,10 +41,20 @@
@executed_format = format
@executed_format_params = format_params
if Spider.runmode != 'devel' && File.exists?(File.join(Spider.paths[:tmp], 'maintenance.txt'))
raise Spider::Controller::Maintenance
end
+ n_route = dispatch_next(action)
+ obj = n_route.obj if n_route
+ if obj.is_a?(Visual) && !(obj.respond_to?(:serving_static?) && obj.serving_static?(n_route.path))
+ set_layout = @layout || @dispatcher_layout
+ if set_layout
+ set_layout = [set_layout] unless set_layout.is_a?(Array)
+ set_layout.map{ |l| self.class.load_layout(l) }
+ obj.dispatcher_layout = set_layout
+ end
+ end
super
end
def output_format_headers(format)
return content_type('application/json') if format == :json && Spider.runmode == 'devel' && @request.params['_text']
@@ -208,17 +218,16 @@
end
layout.init(scene) if layout
end
init_widgets(template, layout)
return template if done?
- Spider::GetText.in_domain(self.class.app.short_name){
- if layout
- layout.render(scene)
- else
- template.render(scene)
- end
- }
+
+ if layout
+ layout.render(scene)
+ else
+ template.render(scene)
+ end
return template
end
def render_error(path, options)
options[:no_prepare_scene] = true
@@ -234,25 +243,16 @@
def after_widget(id)
end
- def dispatched_object(route)
- obj = super
- if (obj.is_a?(Visual))
- set_layout = @layout || @dispatcher_layout
- if set_layout
- set_layout = [set_layout] unless set_layout.is_a?(Array)
- set_layout.map{ |l| self.class.load_layout(l) }
- obj.dispatcher_layout = set_layout
- end
- end
- return obj
- end
def try_rescue(exc)
- exc.uuid = UUIDTools::UUID.random_create.to_s if exc.respond_to?(:uuid=)
+ if exc.respond_to?(:uuid=)
+ return super if exc.uuid # Error page already outputted
+ exc.uuid = UUIDTools::UUID.random_create.to_s
+ end
format = self.class.output_format(:error) || :html
unless exc.is_a?(Spider::Controller::Maintenance) || exc.is_a?(Spider::Controller::NotFound)
return super unless @executed_format == :html
return super unless action_target?
return super if target_mode?
@@ -553,9 +553,10 @@
params = self.layout_params[path] || {}
if (path.is_a?(Symbol))
path = Spider::Layout.named_layouts[path]
end
resource = Spider::Template.find_resource(path+'.layout', layout_path, self)
+ raise "Layout #{path} not found" unless resource && resource.path
layout = Spider::Layout.new(resource.path)
layout.definer_class = resource.definer
layout.asset_set = params[:assets] if params[:assets]
layout.no_asset_profiles(*params[:no_asset_profiles]) if params[:no_asset_profiles]
layout.only_asset_profiles(params[:only_asset_profiles]) if params[:only_asset_profiles]