options_for_select: Unterstützung für multiple selected-values
[kivitendo-erp.git] / SL / Template / Plugin / L.pm
index 34eb730..f776af8 100644 (file)
@@ -203,6 +203,8 @@ sub options_for_select {
 
   my $value_title_sub = $options{value_title_sub};
 
+  my %selected        = map { ( $_ => 1 ) } @{ ref($options{default}) eq 'ARRAY' ? $options{default} : $options{default} ? [ $options{default} ] : [] };
+
   my $access = sub {
     my ($element, $index, $key, $sub) = @_;
     my $ref = ref $element;
@@ -225,7 +227,7 @@ sub options_for_select {
   my $code = '';
   foreach my $result (@elements) {
     my %attributes = ( value => $result->[0] );
-    $attributes{selected} = 'selected' if $options{default} && ($options{default} eq ($result->[0] || ''));
+    $attributes{selected} = 'selected' if $selected{ $result->[0] || '' };
 
     $code .= $self->html_tag('option', _H($result->[1]), %attributes);
   }
@@ -238,6 +240,20 @@ sub javascript {
   return $self->html_tag('script', $data, type => 'text/javascript');
 }
 
+sub stylesheet_tag {
+  my $self = shift;
+  my $code = '';
+
+  foreach my $file (@_) {
+    $file .= '.css'        unless $file =~ m/\.css$/;
+    $file  = "css/${file}" unless $file =~ m|/|;
+
+    $code .= qq|<link rel="stylesheet" href="${file}" type="text/css" media="screen" />|;
+  }
+
+  return $code;
+}
+
 sub date_tag {
   my ($self, $name, $value, @slurp) = @_;
   my %params   = _hashify(@slurp);
@@ -486,6 +502,13 @@ tag for each file name parameter passed. Each file name will be
 postfixed with '.js' if it isn't already and prefixed with 'js/' if it
 doesn't contain a slash.
 
+=item C<stylesheet_tag $file1, $file2, $file3...>
+
+Creates a HTML 'E<lt>link rel="text/stylesheet" href="..."E<gt>' tag
+for each file name parameter passed. Each file name will be postfixed
+with '.css' if it isn't already and prefixed with 'css/' if it doesn't
+contain a slash.
+
 =item C<date_tag $name, $value, cal_align =E<gt> $align_code, %attributes>
 
 Creates a date input field, with an attached javascript that will open a
@@ -564,6 +587,10 @@ C<undef>) will be used as the first element. The title to display for
 this element can be set with the option C<empty_title> and defaults to
 an empty string.
 
+The option C<default> can be either a scalar or an array reference
+containing the values of the options which should be set to be
+selected.
+
 =item C<tab, description, target, %PARAMS>
 
 Creates a tab for C<tabbed>. The description will be used as displayed name.