WebshopApi: falsche sql update Abhängigkeit
[kivitendo-erp.git] / SL / Layout / Base.pm
index 2212f71..df9c008 100644 (file)
@@ -7,7 +7,7 @@ use List::MoreUtils qw(uniq);
 use Time::HiRes qw();
 
 use Rose::Object::MakeMethods::Generic (
 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' },
   'scalar'                => qw(focus),
   'array'                 => [
     'add_stylesheets_inline' => { interface => 'add', hash_key => 'stylesheets_inline' },
@@ -29,7 +29,16 @@ sub new {
 }
 
 sub init_menu {
 }
 
 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 {
 }
 
 sub init_auto_reload_resources_param {
@@ -69,6 +78,8 @@ sub javascripts_inline {
 
 sub init_sub_layouts { [] }
 
 
 sub init_sub_layouts { [] }
 
+sub init_sub_layouts_by_name { +{} }
+
 
 #########################################
 # Interface
 
 #########################################
 # Interface
@@ -103,7 +114,7 @@ sub _find_stylesheet {
 sub get_stylesheet_for_user {
   my $css_path = 'css';
   if (my $user_style = $::myconfig{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";
     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";
   }
   } else {
     $css_path = "$css_path/kivitendo";
   }
-  $::myconfig{css_path} = $css_path; # needed for menunew, FIXME: don't do this here
 
   return $css_path;
 }
 
   return $css_path;
 }
@@ -177,7 +187,7 @@ SL::Layout::Base - Base class for layouts
 
 =head1 DESCRIPTION
 
 
 =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<SL::Layout::Dispatcher>.
 
 This is a base class for layouts in general. It provides the basic interface
 L<SL::Layout::Dispatcher>.
 
 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<pre_content>, C<post_content>, C<start_content>,
 =head1 IMPLEMENTING LAYOUT CALLBACKS
 
 There are eight callbacks (C<pre_content>, C<post_content>, C<start_content>,
-C<end_content>, C<stylesheets>, C<stylesheets_inline>, C<javscripts>,
+C<end_content>, C<stylesheets>, C<stylesheets_inline>, C<javascripts>,
 C<javascripts_inline>) which are documented in L<SL::Layout::Dispatcher>. If
 you are writing a new simple layout, you can just override some of them like
 this:
 C<javascripts_inline>) which are documented in L<SL::Layout::Dispatcher>. 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
 
 
 =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<bin/mozilla/> controllers to change
 that into their own modified stylesheet.
 
 This was at some point cleaned up into a method C<use stylesheet> which took a
 string of space separated stylesheets and processed them into the response.
 
 allowed/expected authors of potential C<bin/mozilla/> controllers to change
 that into their own modified stylesheet.
 
 This was at some point cleaned up into a method C<use stylesheet> 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<add_stylesheets> method.
 
 At the same time the following things need to be possible:
 more intuitive C<add_stylesheets> 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
 
 
 Sanitizing
 
-C<stylesheets> needs to retain it's sanitizing behaviour.
+C<stylesheets> needs to retain its sanitizing behaviour.
 
 =item 4.
 
 
 =item 4.
 
@@ -307,7 +317,7 @@ The standard implementation should be able to collect from sub layouts.
 
 =item 5.
 
 
 =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
 
 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
 
 
 =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 E<lt>s.schoeling@linet-services.deE<gt>
 
 =cut
 
 =head1 AUTHOR
 
 Sven Schöling E<lt>s.schoeling@linet-services.deE<gt>
 
 =cut
-