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>