1 package SL::Helper::UserPreferences::DisplayableName;
4 use parent qw(Rose::Object);
7 use List::MoreUtils qw(none);
9 use SL::Helper::UserPreferences;
11 use Rose::Object::MakeMethods::Generic (
12 'scalar --get_set_init' => [ qw(module default_prefs user_prefs data) ],
20 my ($self, $val, $target) = @_;
22 return if $self->data eq $val;
25 $self->$target->store($self->module, $self->data);
28 sub init_default_prefs {
29 SL::Helper::UserPreferences->new(
30 login => $_[0]->default_login,
31 namespace => $_[0]->namespace,
36 SL::Helper::UserPreferences->new(
37 namespace => $_[0]->namespace,
43 $data = $_[0]->user_prefs ->get($_[0]->module);
44 $data //= $_[0]->default_prefs->get($_[0]->module);
54 sub delete { $_[0]->user_prefs->delete($_[0]->module); $_[0]->data($_[0]->init_data()) }
55 sub login { $_[0]->user_prefs->login }
57 # proxy to default prefs
58 sub get_default { $_[0]->default_prefs->get($_[0]->module) }
61 sub store_value { _store(@_, 'user_prefs') }
62 sub store_default { _store(@_, 'default_prefs') }
65 sub default_login { '#default#' }
66 sub namespace { 'DisplayableName' }
79 SL::Helper::UserPreferences::DisplayableName - hybrid preferences intended
80 for two tiered (user over default) displayable name preferences
84 use SL::Helper::UserPreferences::DisplayableName;
85 my $prefs = SL::Helper::UserPreferences::DisplayableName->new(
86 module => 'SL::DB::Customer'
89 my $value = $prefs->get;
90 my $value = $prefs->store_value('<%number%> <%name%> (PLZ <%zipcode%>)');
91 my $value = $prefs->store_default('<%number%> <%name%>');
95 This module proxies two L<SL::Helper::UserPreferences> instances, one global and
96 one for the current user.
97 It is intended to be used with the C<SL::DB::SomeObject> classes via
98 L<SL::DB::Helper::DisplayableNamePreferences> (see there).
106 Bernd Bleßmann E<lt>bernd@kivitendo-premium.deE<gt>