X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FLayout%2FBase.pm;h=df9c00852bf0a46fb12cc78331d170175dea1a01;hb=d1d70f4ad540f4d57d1b577b337b6db38074e223;hp=2212f718edbc264b66c6d008ed5a9e9904fdb0a6;hpb=42f6982878df79b835d4a7d63b4e4eac502d55e9;p=kivitendo-erp.git diff --git a/SL/Layout/Base.pm b/SL/Layout/Base.pm index 2212f718e..df9c00852 100644 --- a/SL/Layout/Base.pm +++ b/SL/Layout/Base.pm @@ -7,7 +7,7 @@ use List::MoreUtils qw(uniq); use Time::HiRes qw(); use Rose::Object::MakeMethods::Generic ( - 'scalar --get_set_init' => [ qw(menu auto_reload_resources_param) ], + 'scalar --get_set_init' => [ qw(menu auto_reload_resources_param sub_layouts_by_name) ], 'scalar' => qw(focus), 'array' => [ 'add_stylesheets_inline' => { interface => 'add', hash_key => 'stylesheets_inline' }, @@ -29,7 +29,16 @@ sub new { } sub init_menu { - Menu->new('menu.ini'); + SL::Menu->new('user'); +} + +sub init_sublayouts_by_name { + {} +} + +sub get { + $_[0]->sub_layouts; + return grep { $_ } ($_[0]->sub_layouts_by_name->{$_[1]}); } sub init_auto_reload_resources_param { @@ -69,6 +78,8 @@ sub javascripts_inline { sub init_sub_layouts { [] } +sub init_sub_layouts_by_name { +{} } + ######################################### # Interface @@ -103,7 +114,7 @@ sub _find_stylesheet { sub get_stylesheet_for_user { my $css_path = 'css'; if (my $user_style = $::myconfig{stylesheet}) { - $user_style =~ s/\.css$//; # nuke trailing .css, this is a remnand of pre 2.7.0 stylesheet handling + $user_style =~ s/\.css$//; # nuke trailing .css, this is a remnant of pre 2.7.0 stylesheet handling if (-d "$css_path/$user_style" && -f "$css_path/$user_style/main.css") { $css_path = "$css_path/$user_style"; @@ -113,7 +124,6 @@ sub get_stylesheet_for_user { } else { $css_path = "$css_path/kivitendo"; } - $::myconfig{css_path} = $css_path; # needed for menunew, FIXME: don't do this here return $css_path; } @@ -177,7 +187,7 @@ SL::Layout::Base - Base class for layouts =head1 DESCRIPTION -For a description about the external interface of layouts in general see +For a description of the external interface of layouts in general see L. This is a base class for layouts in general. It provides the basic interface @@ -187,7 +197,7 @@ and some capabilities to extend and cascade layouts. =head1 IMPLEMENTING LAYOUT CALLBACKS There are eight callbacks (C, C, C, -C, C, C, C, +C, C, C, C, C) which are documented in L. If you are writing a new simple layout, you can just override some of them like this: @@ -263,15 +273,15 @@ is to just add your content and dispatch to the base method. =head1 GORY DETAILS ABOUT JAVASCRIPT AND STYLESHEET OVERLOADING -The original code used to store one stylehsheet in C<< $form->{stylesheet} >> and +The original code used to store one stylesheet in C<< $form->{stylesheet} >> and allowed/expected authors of potential C controllers to change that into their own modified stylesheet. This was at some point cleaned up into a method C which took a string of space separated stylesheets and processed them into the response. -A lot of controllers are still using this methods so the layout interface -supports it to change as few controller code as possible, while providing the +A lot of controllers are still using this method so the layout interface +supports it to change as little controller code as possible, while providing the more intuitive C method. At the same time the following things need to be possible: @@ -297,7 +307,7 @@ A leaf layout should be able to override a callback to return a list. Sanitizing -C needs to retain it's sanitizing behaviour. +C needs to retain its sanitizing behaviour. =item 4. @@ -307,7 +317,7 @@ The standard implementation should be able to collect from sub layouts. =item 5. -Preserving of Inclusion Order +Preserving Inclusion Order Since there is currently no standard way of mixing own content and including sub layouts, this has to be done manually. Certain things like jquery get added @@ -320,11 +330,15 @@ classes, which should be changed. The other points work pretty well. =head1 BUGS -None yet, if you don't count the horrible stylesheet/javascript interface. +* stylesheet/javascript interface is a horrible mess. + +* It's currently not possible to do compositor layouts without assupmtions +about the position of the content. That's because the content will return +control to the actual controller, so the layouts need to know where to split +pre- and post-content. =head1 AUTHOR Sven Schöling Es.schoeling@linet-services.deE =cut -