cvsuser     05/11/07 19:44:42

  Modified:    App-Context/lib/App Context.pm
  Log:
  add _so_get() and {temporary} widgets
  
  Revision  Changes    Path
  1.23      +27 -3     p5ee/App-Context/lib/App/Context.pm
  
  Index: Context.pm
  ===================================================================
  RCS file: /cvs/public/p5ee/App-Context/lib/App/Context.pm,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- Context.pm        27 Sep 2005 16:51:28 -0000      1.22
  +++ Context.pm        8 Nov 2005 03:44:42 -0000       1.23
  @@ -546,6 +546,9 @@
       # This is really handy when you have something like a huge spreadsheet
       # of text entry cells (usually an indexed variable).
   
  +    if (defined $args->{temporary}) {            # may be specified 
implicitly
  +        $lightweight = 1;
  +    }
       if (defined $args->{lightweight}) {          # may be specified 
explicitly
           $lightweight = $args->{lightweight};
       }
  @@ -603,8 +606,10 @@
               if ($App::DEBUG && $self->dbg(3));
   
           bless $service, $class;            # bless the service into the class
  -        $session->{cache}{$type}{$name} = $service;       # save in the cache
  -        $service->_init();                # perform additional 
initializations
  +        if (!$service->{temporary}) {
  +            $session->{cache}{$type}{$name} = $service;   # save in the cache
  +        }
  +        $service->_init();               # perform additional initializations
       }
   
       $self->dbgprint("Context->service() = $service")
  @@ -890,6 +895,25 @@
       return $value;
   }
   
  +# This is a very low-level _so_get() suitable for use within the App-Context
  +# framework.  It requires you to separate $name and $var yourself.
  +
  +sub _so_get {
  +    &App::sub_entry if ($App::trace);
  +    my ($self, $name, $var, $default) = @_;
  +
  +    my $value = $self->{session}{cache}{SessionObject}{$name}{$var};
  +    if (! defined $value) {
  +        $value = $self->{session}{store}{SessionObject}{$name}{$var};
  +        if (! defined $value) {
  +            $value = $self->{conf}{SessionObject}{$name}{$var};
  +        }
  +    }
  +
  +    &App::sub_exit($value) if ($App::trace);
  +    return $value;
  +}
  +
   #############################################################################
   # so_set()
   #############################################################################
  
  
  

Reply via email to