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]