CVars: spelling: dependant -> dependent (wir haben uns irgendwann mal auf AE geeinigt)
[kivitendo-erp.git] / SL / DB / CustomVariableConfig.pm
1 # This file has been auto-generated only because it didn't exist.
2 # Feel free to modify it at will; it will not be overwritten automatically.
3
4 package SL::DB::CustomVariableConfig;
5
6 use strict;
7
8 use List::MoreUtils qw(any);
9
10 use SL::DB::MetaSetup::CustomVariableConfig;
11 use SL::DB::Manager::CustomVariableConfig;
12 use SL::DB::Helper::ActsAsList;
13
14 __PACKAGE__->meta->initialize;
15
16 __PACKAGE__->configure_acts_as_list(group_by => [qw(module)]);
17
18 sub validate {
19   my ($self) = @_;
20
21   my @errors;
22   push @errors, $::locale->text('The name is missing.')        if !$self->name;
23   push @errors, $::locale->text('The description is missing.') if !$self->description;
24   push @errors, $::locale->text('The type is missing.')        if !$self->type;
25   push @errors, $::locale->text('The option field is empty.')  if (($self->type || '') eq 'select') && !$self->options;
26
27   return @errors;
28 }
29
30 use constant OPTION_DEFAULTS =>
31   {
32     MAXLENGTH => 75,
33     WIDTH => 30,
34     HEIGHT => 5,
35   };
36
37 sub processed_options {
38   my ($self) = @_;
39
40   if( exists($self->{processed_options_cache}) ) {
41     return $self->{processed_options_cache};
42   }
43
44   my $ops = $self->options;
45   my $ret;
46
47   if ( $self->type eq 'select' ) {
48     my @op_array = split('##', $ops);
49     $ret = \@op_array;
50   }
51   else {
52     $ret = {%{$self->OPTION_DEFAULTS}};
53     while ( $ops =~ /\s*([^=\s]+)\s*=\s*([^\s]*)(?:\s*|$)/g ) {
54       $ret->{$1} = $2;
55     }
56   }
57
58   $self->{processed_options_cache} = $ret;
59
60   return $ret;
61 }
62
63 sub processed_flags {
64   my ($self) = @_;
65
66   if( exists($self->{processed_flags_cache}) ) {
67     return $self->{processed_flags_cache};
68   }
69
70   my $flags = $self->flags;
71   my $ret;
72
73   foreach my $flag (split m/:/, $flags) {
74     if ( $flag =~ m/(.*?)=(.*)/ ) {
75       $ret->{$1} = $2;
76     } else {
77       $ret->{$flag} = 1;
78     }
79   }
80
81   $self->{processed_flags_cache} = $ret;
82
83   return $ret;
84 }
85
86 sub has_flag {
87   my ($self, $flag) = @_;
88
89   return $self->processed_flags()->{$flag};
90 }
91
92 sub type_dependent_default_value {
93   my ($self) = @_;
94
95   return $self->default_value if $self->type ne 'select';
96   return (any { $_ eq $self->default_value } @{ $self->processed_options }) ? $self->default_value : $self->processed_options->[0];
97 }
98
99 1;