You are viewing a plain text version of this content. The canonical link for it is here.
Posted to embperl-cvs@perl.apache.org by ri...@apache.org on 2005/02/11 15:52:10 UTC

cvs commit: embperl/podsrc Config.spod

richter     2005/02/11 06:52:10

  Modified:    .        Embperl.pod INSTALL.pod README README.v2
               Embperl  Mail.pm
               eg/web   config.pl
               eg/web/pod/doc index.htm
               podsrc   Config.spod
  Log:
  Update docs
  
  Revision  Changes    Path
  1.86      +279 -87   embperl/Embperl.pod
  
  Index: Embperl.pod
  ===================================================================
  RCS file: /home/cvs/embperl/Embperl.pod,v
  retrieving revision 1.85
  retrieving revision 1.86
  diff -u -r1.85 -r1.86
  --- Embperl.pod	24 Aug 2004 05:14:17 -0000	1.85
  +++ Embperl.pod	11 Feb 2005 14:52:09 -0000	1.86
  @@ -189,6 +189,10 @@
   can also use the [# ... #] block to take a part out of your document.
   
   
  +=head2 [= =] (Internationalisation)
  +
  +Defines a string which should be translated into a local language. See
  +L<Internationalisation (I18N)> for details.
   
   =head2 [$ Cmd Arg $]  (Meta-Commands)
   
  @@ -441,12 +445,6 @@
   the result in an array.  You may provide as many columns as you need.
   It is also possible to call a 'fetch' subroutine in each table row.
   
  -=item B<TH>, B</TH>
  -
  -The <TH> tag is interpreted as a table heading.  If the whole row is made
  -up of <TH> </TH> instead of <TD> </TD>, it is treated as a column heading.
  -Everything else will be treated as row headings in the future, but are not 
  -now: everything else is ignored in the current version.
   
   =item B<DIR>, B<MENU>, B<OL>, B<UL>, B<DL>, B<SELECT>, B</DIR>, B</MENU>,
   B</OL>, B</UL>, B</DL>, B</SELECT>
  @@ -1022,6 +1020,8 @@
   
   =head2 Embperl::Req::SetupSession ($req_rec, $Inputfile)  [1.3b6+]
   
  +B<NOT YET IMPLEMENTED IN 2.0>
  +
   This can be used from a script that will later call L<Embperl::Execute|Execute> to
   preset the session so it's available to the calling script. 
   
  @@ -1050,6 +1050,8 @@
   
   =head2 Embperl::Req::CleanupSession / $r -> CleanupSession [1.3b6+]
   
  +B<NOT YET IMPLEMENTED IN 2.0>
  +
   Must be called at the end of a script by scripts that use C<SetupSession>,
   but do not call L<Embperl::Execute|Execute>.
   If called as a method C<$r> must be 
  @@ -1069,6 +1071,8 @@
   
   =head2 Embperl::Req::SetSessionCookie / $r -> SetSessionCookie [1.3b7+]
   
  +B<NOT YET IMPLEMENTED IN 2.0>
  +
   Must be called by scripts that use C<SetupSession>,
   but do not call L<Embperl::Execute|Execute>. This is neccessary to set the cookie
   for the session id, in case a new session is created, which is normaly done by 
  @@ -1076,95 +1080,292 @@
   a Embperl::Req object, which is passed as first parameter to every Embperl page in @_ .
   
   
  -=head1 (Safe-)Namespaces and opcode restrictions
  +=head1 Recipes
   
  -Since most web servers will contain more than one document, it is
  -necessary to protect the documents against each other.  Embperl does
  -this by using Perl namespaces.  By default, Embperl executes every
  -document in its own namespace (package).  This will prevent documents
  -from accidentally overriding the other's data.  You can change this
  -behavior (or simply the package name) with the configuration directive
  -B<EMBPERL_PACKAGE>.  NOTE: By explicitly specifying a package name, you
  -can access data that is used by another document.
   
  -If Embperl is used by more than one person, it may be neccessary to
  -protect documents from each other.  To do this, Embperl
  -gives you the option of using safe namespaces.  Each document runs in
  -its own package and can't access anything outside of this package.
  -(See the documentation of Safe.pm for a more detailed discussion of 
  -safe namespaces.)
  +Starting with 2.0b4 Embperl introduces the concept of recipes. A recipe basically
  +tells Embperl how a component should be build. While before 2.0b4 you could 
  +have only one processor that works on the request (the Embperl processor -
  +you're also able to define different syntaxes), now you can have multiple of them
  +arranged in a pipeline or even a tree. While you are able to give the full
  +recipe when calling Execute, this is not very convenient, so normally you
  +will only give the name of a recipe, either as parameter 'recipe' to
  +Execute or as EMBPERL_RECIPE in your httpd.conf. Of course you can have
  +different recipes for different locations and/or files. A recipe is constructed
  +out of providers. A provider can either be read from some source or do some
  +processing on a source. There is no restriction on what sort of data a provider
  +has as in- and output - you just have to make sure that output format of
  +a provider matches the input format of the next provider. In the current 
  +implementation Embperl comes with a set of built-in providers:
   
  -To make a document run in a safe namespace, simply add
  -B<optSafeNamespace> to B<EMBPERL_OPTIONS>.  The default package name
  -used is the same as in normal operation and can be changed with
  -B<EMBPERL_PACKAGE>.  NOTE: From the perspective of the document being
  -executed, the code is running in the package B<main>!
  +=over 4
   
  -A second option to make Embperl more secure is the use of the opcode
  -restriction mask.  Before you can use the opcode mask, you must set up
  -a safe compartment.
  +=item file
   
  - B<$cp = Embperl::AddCompartment($name);>
  +read file data
   
  -This will create a new compartment with a default opcode mask and the
  -name $name.  (The name is used later to tell Embperl which compartment
  -to use.)  Now you can change the operator mask.  For example:
  +=item memory
   
  - B<$cp->deny(':base_loop');>
  +get data from a scalar
   
  -In your configuration you must set the option B<optOpcodeMask> in
  -B<EMBPERL_OPTIONS> and specify from which compartment the opcode mask
  -should be taken by setting B<EMBPERL_COMPARTMENT>.
  +=item epparse
   
  - Example (for use with mod_perl):
  +parse file into a Embperl tree structure
   
  -    B<srm.conf:>
  +=item epcompile
   
  -    PerlScript startup.pl
  +compile Embperl tree structure
   
  -    SetEnv EMBPERL_DEBUG 2285
  +=item eprun
   
  -    Alias /embperl /path/to/embperl/eg
  +execute Embperl tree structure
   
  -    <Location /embperl/x>
  -    SetHandler perl-script
  -    PerlHandler Embperl
  -    Options ExecCGI
  -    PerlSetEnv EMBPERL_OPTIONS 12
  -    PerlSetEnv EMBPERL_COMPARTMENT test
  -    </Location>
  +=item eptostring
   
  -    B<startup.pl:>
  +convert Embperl tree structure to string
   
  -    $cp = Embperl::AddCompartment('test');
  -    $cp->deny(':base_loop');
  +=item libxslt-parse-xml
   
  +parse xml source for libxslt
   
  -This will execute the file startup.pl on server startup.  startup.pl
  -sets up a compartment named `test', which will have a default opcode
  -mask and additionaly, will have loops disabled.  Code will be executed
  -in a safe namespace.
  +=item libxslt-compile-xsl
   
  -NOTE: The package name from the compartment is B<NOT> used!
  +parse and compile stylesheet for libxslt
   
  -Look at the documentation of Safe.pm and Opcode.pm for more detailed
  -information on how to set opcode masks.
  +=item libxslt
   
  +do an xsl transformation via libxslt
   
  -=head1 Utility Functions
  +=item xalan-parse-xml
   
  -=head2 AddCompartment($Name)
  +parse xml source for xalan
   
  -Adds a compartment for use with Embperl.  Embperl only uses the opcode
  -mask from it, not the package name.  AddCompartment returns the newly-
  -created compartment so you can allow or deny certain opcodes.  See the
  -Safe.pm documentation for details of setting up a compartment.  See the 
  -chapter about L<"(Safe-)Namespaces and opcode restrictions"> for details on how Embperl uses compartments.
  +=item xalan-compile-xsl
   
  -Example:
  +parse and compile stylesheet for xalan
  +
  +=item xalan
  +
  +do an xsl transformation via xalan
  +
  +=back
  +
  +There is a C interface, so new custom providers can be written, but what makes it
  +really useful is that the next release of Embperl will contain a
  +Perl interface, so you can write your own providers in Perl.
  +
  +The default recipe is named Embperl and contains the following providers:
  +
  +    +-----------+
  +    + file      +
  +    +-----------+
  +          |
  +          v
  +    +-----------+
  +    + epparse   +
  +    +-----------+
  +          |
  +          v
  +    +-----------+
  +    + epcompile +
  +    +-----------+
  +          |
  +          v
  +    +-----------+
  +    + eprun     +
  +    +-----------+
  +
  +This cause Embperl to behave like it has done in the past, when no
  +recipes existed.
  +
  +Each intermediate result could be cached. So for example you are able
  +to cache the already parsed XML or compiled stylesheet in memory,
  +without the need to reparse/recompile it over and over again.
  +
  +Another nice thing about recipes is that they are not static. A recipe
  +is defined by a recipe object. When a request comes in, Embperl calls
  +the get_recipe method of teh application object, which by default
  +calls the get_recipe of the named recipe object, which should return a array
  +that describes what Embperl has to do. The get_recipe methods can of course
  +build the array dynamically, looking, for example, at the request parameters
  +like filename, formvalues, mime type or whatever. For example if you
  +give a scalar as input the Embperl recipe replaces the file provider
  +with a memory provider. Additionally you can specify more then one
  +recipe (separated by spaces). Embperl will call all the new methods in
  +turn until the first one that returns undef. This way you can create recipes
  +that are known for what they are responsible. One possibility would be
  +to check the file extension and only return the recipe if it matches.
  +Much more sophisticated things are possible...
  +
  +See perldoc Embperl::Recipe for how to create your own provider.
  +
  +=head1 XML, XSLT
  +
  +As mentioned above, Embperl now contains a provider for doing XSLT transformations.
  +More XML will come in the next releases. The easiest thing is to use the XSLT
  +stuff thru the predefined recipes:
  +
  +
  +=over 4
  +
  +=item EmbperlLibXSLT
  +
  +the result of Embperl will run thru the Gone libxslt
  +
  +=item EmbperlXalanXSLT
  +
  +the result of Embperl will run thru Xalan-C
  +
  +=item EmbperlXSLT
  +
  +the result of Embperl will run thru the XSL transformer
  +given by xsltproc or EMBPERL_XSLTPROC
  +
  +=item LibXSLT
  +
  +run source thru the Gone libxslt
  +
  +=item XalanXSLT
  +
  +run source thru Xalan-C
  +
  +=item XSLT
  +
  +run source thru the XSL transformer given by xsltproc or 
  +
  +=item EMBPERL_XSLTPROC
  +
  +=back
  +
  +For example, including the result of an XSLT 
  +transformation into your html page could look like this:
  +
  +
  +    <html><head><title>Include XML via XSLT</title></head>
  +    <body>
  +
  +    <h1>Start xml</h1>
  +    [- Execute ({inputfile => 'foo.xml', recipe => 'EmbperlXalanXSLT', xsltstylesheet => 'foo.xsl'}) ; -]
  +    <h1>END</h1>
  +
  +    </body>
  +    </html>
  +
  +As you already guessed, the xsltstylesheet parameter gives the name of the xsl 
  +file. You can also use the EMBPERL_XSLTSTYLESHEET configuration directive
  +to set it from your configuration file.
  +
  +By setting EMBPERL_ESCMODE (or $escmode) to 15 you get the correct escaping
  +for XML.
  +
  +
  +=head1 Form Validation
   
  -	$cp = Embperl::AddCompartment('TEST');
  -	$cp->deny(':base_loop');
  +Embperl comes with the ability to validate form data. Rules can be defined how the
  +data from forms should be validated. This done by the module Embperl::Form::Validate.
  +This module is able to do client side verification by generation JavaScript code 
  +and server side verification by providing a Perl method to validate the data.
  +Embperl::Form::Validate comes with a lot of standard tests and you can extent it
  +by providing your own test classes, which can inherit from the shiped test classes.
  +
  +For further details see perldoc Embperl::Form::Validate.
  +
  +
  +=head1 Caching
  +
  +Embperl caches a lot of intermediate results by default to speed up generation of pages. 
  +(For example compiled Perl code and compiled XSLT templates)
  +
  +With Embperl is also possible to cache the output of pages or components. This is controlled
  +by parameters passed to the providers via recipes or as configuration directives inside
  +the page, passed to Execute or in your httpd.conf.
  +
  +See Emperl_Cache_* and Embperl_Expires_* in Config.pod.
  +
  +
  +=head1 Internationalisation (I18N)
  +
  +Starting with 2.0b6 Embperl has buildin support for multi-language applications.
  +There are two things to do. First inside your pages marks which parts are translateable,
  +by using the [= =]. Inside the [= =] blocks you could either put id, which are symbolic
  +names for the text, or you put the text in your primary lanaguage inside the blocks.
  +An example code could look like:
  +
  +[= heading =]
  +
  +<input name="foo" value="[=bar=]" type="submit">
  +
  +Now you run the embpmsgid.pl utility, which extracts all the ids from your page:
  +
  +    perl embpmsgid.pl -l de -l en -d msg.pl foo.htm
  +
  +This will create a file msg.pl which contains empty definitions for 'en' and 'de'
  +with all the ids found in the page. If the file msg.pl already exists, the definitions
  +are added. You can give more then one filename to the commandline. The format of the 
  +msg.pl file is written with Data::Dumper, so it can be easily read in via 'do' and 
  +postprocessed. As next step fill the empty definition with the correct translation.
  +The last thing to do, is tell Embperl which language set to use. You do this inside
  +the init method of the application object. Create an application object, which reads
  +in the message and when the init method is called, pass the correct one to Embperl.
  +There are tow methods $r -> message and $r -> default_message. Both returns a array
  +ref on which you can push your message hashs. Embperl consults first the message array
  +and if not found afterwards the default_message array for the correct message.
  +Because both are arrays you can push multiple message sets on it. This is handy when
  +your application object calls it's base class, which also may define some messages.
  +Here is an example:
  +
  +
  +    package My::App ; 
  +
  +    @ISA = ('Embperl::App') ;
  +
  +    %messages =
  +        (
  +        'de' =>
  +            {
  +            'heading' => '�berschrift',
  +            'bar'     => 'Absenden',
  +            },
  +        'en' =>
  +            {
  +            'heading' => 'Heading',
  +            'bar'     => 'Submit',
  +            },
  +        ) ;
  +
  +    sub init
  +        {
  +        my $self = shift ;
  +        my $r = $self -> curr_req ;
  +
  +        $lang = $r -> param -> language || 'de' ;
  +        push @{$r -> messages}, $messages{$lang} ;
  +        push @{$r -> default_messages}, $messages{'en'} if ($lang ne 'en') ;
  +        }
  +
  +    1 ;
  +
  +
  +Just load this package and set EMBPERL_APP_HANDLER_CLASS to My::App, then 
  +Embperl will call the init method on the start of the request.
  +
  +If you are using Embperl::Object, you may instead save it as a file in your
  +document hiearchie make the filename know to Embperl::Object with the 
  +EMBPERL_OBJECT_APP directive and Embperl::Object will retrieve the correct
  +application file, just in the same way it retrieves other files.
  +
  +NOTE: When using with Embperl::Object, don't make a package declaration at
  +the top of your application object, Embperl::Object assign it's own namespace
  +to the application object.
  +
  +In case you need to retrieve a text inside your Perl code, you can do this
  +with $r -> gettext('bar')
  +
  +
  +
  +
  +
  +=head1 Utility Functions
   
   
   =head2 MailFormTo($MailTo, $Subject, $ReturnField)
  @@ -1214,7 +1415,7 @@
   B<NOTE 1:> If you are inside of an Execute, Embperl will only exit this Execute, but 
   the file which called the file containing the exit with Execute will continue.
    
  -B<NOTE 2:> If you called exit with an argument it exits the whole request.
  +B<NOTE 2:> If you called exit with an argument it exits the whole request e.g. exit (200).
   
   B<NOTE 3:> If you write a module which should work with Embperl under mod_perl, 
   you must use Apache::exit instead of the normal Perl exit (as always 
  @@ -1351,9 +1552,6 @@
   =back
   
   You can reach us via http://www.ecos.de or info@ecos.de 
  -For more information about our support see 
  -
  -http://www.ecos.de/x/index.htm/support/eng_r_support.htm
   
   
   =head2 How to Support the Developement of Embperl
  @@ -1384,35 +1582,29 @@
   
   mod_perl                http://perl.apache.org/
   
  -mod_perl FAQ            http://perl.apache.org/faq
  -
   Embperl                 http://perl.apache.org/embperl/
   
   Embperl (german)        http://www.ecos.de/embperl/
   
   DBIx::Recordset	        ftp://ftp.dev.ecos.de/pub/perl/dbi
   
  -apache web server       http://www.apache.org/
  -
  -ben-ssl (free httpsd)   http://www.apache-ssl.org/
  -
  -stronghold (commerical httpsd) http://www.c2.net/
  -
  -europe                  http://www.eu.c2.net/
  -
  -other Apache modules    http://perl.apache.org/src/apache-modlist.html
  +Apache web server       http://www.apache.org/
   
   =head2 Download
   
  -mod_perl                http://www.perl.com/CPAN/modules/by-module/Apache
  +mod_perl                http://perl.apache.org/dist/
  +
  +Apache Perl Modules     http://www.perl.com/CPAN/modules/by-module/Apache/
   
   Embperl                 ftp://ftp.dev.ecos.de/pub/perl/embperl
   
   DBIx::Recordset	        ftp://ftp.dev.ecos.de/pub/perl/dbi
   
  -Debian packages         http://www.cse.unsw.edu.au/~gusl/embperl
  +PPM for ActiveState  
  +
  +- Perl 5.6.x            http://theoryx5.uwinnipeg.ca/ppmpackages/
   
  -PPM for ActiveState     http://theoryx5.uwinnipeg.ca/ppmpackages/
  +- Perl 5.8.x            http://theoryx5.uwinnipeg.ca/ppms
   
   B<Informations on how to install Embperl can be found in> L<INSTALL.pod>
   
  
  
  
  1.29      +5 -16     embperl/INSTALL.pod
  
  Index: INSTALL.pod
  ===================================================================
  RCS file: /home/cvs/embperl/INSTALL.pod,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- INSTALL.pod	6 Nov 2004 13:33:07 -0000	1.28
  +++ INSTALL.pod	11 Feb 2005 14:52:09 -0000	1.29
  @@ -364,7 +364,7 @@
   To learn how to use and configure Embperl, read the L<"Embperl documentation"|"Embperl.pod">.
   
   
  -=head2 Further Documentation (english)
  +=head2 Further Documentation
   
   
   See L<"perldoc Features"|"Features.pod"> for list of Embperls features 
  @@ -375,29 +375,18 @@
   See L<"perldoc IntroEmbperlObject"|"IntroEmbperlObject.pod"> for an step by step 
   introduction to the OO features of Embperl.
   
  +See L<"perldoc EmbperlIntro2.pod"|"EmbperlIntro2.pod"> for Introduction to Embperl 2 
  +advanced features.
  +
   See L<"perldoc Config"|"Config.pod"> for configuration and calling Embperl.
   
   See L<"perldoc Embperl"|"Embperl.pod"> for complete documentation.
   
  -See the L<"eg/"|"Examples.pod"> directory for examples.
  -
  -See L<"perldoc Faq"|"Faq.pod"> for Frequently Asked Questions.
  -
   See L<"perldoc TipsAndTricks"|"TipsAndTricks.pod"> for Tips and Tricks 
   around Embperl.
   
   or you can view it online on http://perl.apache.org/embperl/
  -
  -=head2 Further Documentation (german)
  -
  -See B<perldoc FeaturesD> for list of Embperls features 
  -
  -See B<perldoc IntroD> for an step by step 
  -introduction to Embperl.
  -
  -See B<perldoc EmbperlD> for complete documentation.
  -
  -or you can view it online on http://www.ecos.de/embperl/
  +and http://www.ecos.de/embperl/
   
   
   =head2 Compiling XALAN
  
  
  
  1.38      +5 -13     embperl/README
  
  Index: README
  ===================================================================
  RCS file: /home/cvs/embperl/README,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- README	24 Aug 2004 05:14:17 -0000	1.37
  +++ README	11 Feb 2005 14:52:09 -0000	1.38
  @@ -42,14 +42,15 @@
   The following documentation is available within the distribution
   
   Features of Embperl:            perldoc Features.pod
  -Introduction to Embperl:        perldoc Intro.pod
  +Introduction to basic Embperl:  perldoc Intro.pod
  +Introduction to Embperl 2 
  +advanced features:              perldoc EmbperlIntro2.pod
   Introduction to EmbperlObject:  perldoc IntroEmbperlObject.pod
   Installation of Embperl:        perldoc INSTALL.pod
   Full documentation:             perldoc Config.pod
                                   perldoc Embperl.pod
                                   perldoc EmbperlObject.pm
                                   perldoc Embperl/Mail.pm
  -Frequent Asked Questions:       perldoc Faq.pod
   Tips and Tricks:                perldoc TipsAndTricks.pod
   Changes:                        perldoc Changes.pod
   Examples:		        eg/x/README
  @@ -59,12 +60,6 @@
   
       http://perl.apache.org/embperl/
   
  -The following documentation is available in GERMAM
  -
  -Features of Embperl:        perldoc FeaturesD.pod
  -Introduction to Embperl:    perldoc IntroD.pod
  -Full documentation:         perldoc EmbperlD.pod
  -
   All the above and further information can be found at the german Embperl website 
   
       http://www.ecos.de/embperl/
  @@ -136,7 +131,7 @@
   perl5.004_04
   perl5.005_01/02/03
   perl5.6.1
  -perl5.8.5
  +perl5.8.x
   apache_1.3.0 - apache_1.3.31, - apache 2.0.50
   apache + mod_ssl
   apache_ssl (Ben SSL)
  @@ -200,9 +195,6 @@
   * Adding new features
   
   You can reach us via http://www.ecos.de or info@ecos.de 
  -For more information about our support see 
  -
  -http://www.ecos.de/x/index.htm/support/eng_r_support.htm
   
   
   
  
  
  
  1.6       +14 -630   embperl/README.v2
  
  Index: README.v2
  ===================================================================
  RCS file: /home/cvs/embperl/README.v2,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- README.v2	16 Aug 2004 07:36:14 -0000	1.5
  +++ README.v2	11 Feb 2005 14:52:09 -0000	1.6
  @@ -36,8 +36,9 @@
   processing a single source in a pipeline towards the output. In
   Embperl is is not only a smimple pipeline, but a tree structure,
   so multiple sources can be incorpoarted in one result.
  +Recipes descripes how providers are executed.
   Rearrangeing the provideres or writing and useing new ones gives
  -flexibility and power. Addtional to the standart Embperl providers
  +flexibility and power. Addtional to the standard Embperl providers
   Embperl ships with XML parser and XSLT processor providers.
   
   The new execution scheme is also faster, because html tags and metacommands
  @@ -84,11 +85,9 @@
   The component object is responsible for a single component, inside the
   desired output. It holds things like sourcefile etc.
   
  -All three object has subobject which holds the configuration and a
  +All three objects have a subobject which holds the configuration and a
   subobject for it's current parameters.
   
  -See below for a sort list of accessable members.
  -
   
   Debugging
   ---------
  @@ -133,6 +132,12 @@
   
     Embperl_UseEnv on
   
  +- Embperl now supports Apache 2 / mod_perl 2, but you need a additional
  +  configuration line in your httpd.conf:
  +
  +      LoadModule  embperl_module  /path/to/perl/site/lib/Embperl/Embperl.so
  +
  +
   - For every container in your httpd.conf (e.g. VirtualHost,Directory,Location)
     where you want to define any application level configuration directives
     (see below under tAppConfig for a list), you need to set a unique
  @@ -186,20 +191,15 @@
   - Embperl doesn't change the current working directory anymore to the
     directory of the source file. This is done for performance reasons 
     and because it won't reliable work with threads under mod_perl 2.0.
  -  You can use $req -> component -> cwd to get the directotry of the
  +  You can use $req -> component -> cwd to get the directory of the
     sourcefile (where $req is Embperl request object, which is the first
     paramter passed to the page i.e. $_[0])
   
  +- safe namespaces are not supported anymore, since are are not really 
  +  safe anyway
   
  +- errors can be mailed to an administrator
   
  -The following things are not fully tested/working yet:
  -------------------------------------------------------
  -
  -- [- exit -]
  -  exit works not inside of [$ sub $], outside it works
  -  (It also can now exit the whole request, see below)  
  -
  -- safe namespaces
   
   
   Embperl 1.x compatibility flag
  @@ -210,423 +210,6 @@
   2.x on the same machine without conflicts.
   
   
  -Additional Config directives
  -----------------------------
  -
  -Caching parameter
  ------------------
  -
  -execute parameter / httpd.conf environment variable / name inside page (must set inside [! !])
  -
  -
  -cache_key / EMBPERL_CACHE_KEY / $CACHE_KEY 
  -
  -literal string that is appended to the cache key
  -
  -
  -cache_key_options / EMBPERL_CACHE_KEY_OPTIONS / $CACHE_KEY_OPTIONS
  -
  -    ckoptCarryOver = 1,     use result from CacheKeyFunc of previous step if any 
  -    ckoptPathInfo  = 2,     include the PathInfo into CacheKey 
  -    ckoptQueryInfo = 4,	    include the QueryInfo into CacheKey 
  -    ckoptDontCachePost = 8, don't cache POST requests  (not yet implemented)
  -
  -    Default: all options set
  -
  -
  -cache_key_func / EMBPERL_CACHE_KEY_FUNC / &CACHE_KEY
  -
  -function that should be called when build a cache key. The result is
  -appended to the cache key.
  -
  -
  -expires_func / EMBPERL_EXPIRES_FUNC / &EXPIRES
  -
  -function that is called every time before data is taken from the cache.
  -If this funtion returns true, the data from the cache isn't used anymore,
  -but rebuilt.
  -
  -
  -Function could be either a coderef (when passed to Execute), a name of a
  -subroutine or a string starting with "sub " in which case it is compiled
  -as anonymous subroutine.
  -
  -
  -expires_in / EMBPERL_EXPIRES_IN / $EXPIRES
  -
  -Time in seconds that the output should be cached. (0 = never, -1 = forever)
  -
  -expires_in / EMBPERL_EXPIRES_FILENAME / $EXPIRES_FILENAME
  -
  -Expires when the given file has changed
  -
  -
  -Syntax switching
  -----------------
  -
  -syntax / EMBPERL_SYNTAX / [$ syntax $]
  -
  -Used to tell Embperl which syntax to use inside a page. Embperl comes with
  -the following syntaxes: 
  -
  -    - EmbperlHTML       # all the HTML tags that Embperl recognizes by default
  -    - EmbperlBlocks     # all the [ ] blocks that Embperl supports
  -    - Embperl           # (default; contains EmbperlHtml and EmbperlBlocks)
  -    - ASP               # <%  %> and <%=  %>, see perldoc Embperl::Syntax::ASP
  -    - SSI               # Server Side Includes, see perldoc Embperl::Syntax::SSI
  -    - Perl              # File contains pure Perl (similar to Apache::Registry), but
  -                        #  can be used inside EmbperlObject
  -    - Text              # File contains only Text, no actions are taken on the Text
  -    - Mail              # Defines the <mail:send> tag, for sending mail. This is an
  -                        # example for a taglib, which could be a base for writing
  -                        # your own taglib to extent the number of available tags
  -    - POD               # translates pod files to XML, which can be converted to 
  -                        # the desired output format by an XSLT transformation
  -    - RTF               # Can be used to process word processing documents in RTF format
  -
  -You can get a description for each syntax if you type
  -
  -    perldoc Embperl::Syntax::xxx
  -
  -where 'xxx' is the name of the syntax.
  -
  -You can also specify multiple syntaxes e.g.
  -
  -    EMBPERL_SYNTAX "Embperl SSI"
  -
  -    Execute ({inputfile => '*', syntax => 'Embperl ASP'}) ;
  -
  -The 'syntax' metacommand allows to switch the syntax or to 
  -add or subtract syntaxes e.g.
  -
  -    [$ syntax + Mail $]
  -
  -will add the Mail taglib so the <mail:send> tag is available after
  -this line.
  -
  -    [$ syntax - Mail $]
  -
  -now the <mail:send> tag is unknown again
  -
  -    [$ syntax SSI $]
  -
  -now you can only use SSI commands inside your page.
  -
  -EMBPERL_INPUT_ESCMODE
  ----------------------
  -
  -0   don't interpret input (default)
  -1   unescape html escapes to their characters (i.e. &lt; becomes < )
  -    inside of Perl code
  -2   unescape url escapes to their characters (i.e. %26; becomes & )
  -    inside of Perl code
  -3   unescape html and url escapes, depending on the context
  -
  -Add 4 to remove html tags inside of Perl code. This is help full when
  -an html editor insert html tags like <br> inside your Perl code.
  -
  -Set EMBPERL_INPUT_ESCMODE to 7 to get the old default of Embperl < 2.0b6
  -Set EMBPERL_INPUT_ESCMODE to 0 to get the old behaviour when optRawInput was set.
  -This is the current default.
  -
  -Error mailing
  --------------
  -
  -EMBPERL_MAIL_ERRORS_TO          <email>
  -    email address to mail any error to
  -
  -EMBPERL_MAIL_ERRORS_LIMIT       <num>
  -    do not mail more then <num> errors. Set to 0 for no limit.
  -
  -EMBPERL_MAIL_ERRORS_RESET_TIME  <sec>
  -    reset error counter if for <sec> seconds no error has occured
  -
  -EMBPERL_MAIL_ERRORS_RESEND_TIME <sec>
  -    mail errors of <sec> seconds regardless of the error counter
  -
  -All error counting is done per child, so if you run a large site and
  -have 100 childs, you may get 100 * EMBPERL_MAIL_ERRORS_LIMIT mail
  -before they are limited.
  -
  -
  -Session handling
  -----------------
  -
  -Session handling has changed from 1.3.3 to 1.3.4 and 2.0b3 to 2.0b4. You must either
  -install Apache::SessionX or set
  -
  -    PerlSetEnv EMBPERL_SESSION_HANDLER_CLASS "Embperl::Session"
  -
  -to get the old behaviour.
  -
  -
  -Overview Embperl objects and their methods
  -------------------------------------------
  -
  -
  - * Application object
  -
  -   thread
  -   curr_req
  -   config
  -   lfd
  -   user_session
  -   state_session
  -   app_session
  -   udat
  -   sdat
  -   mdat
  -   debug
  -   errors_count
  -   errors_last_time 
  -   errors_last_send_time
  -
  -
  - * Application configuration
  -
  -   app_name
  -   app_handler_class
  -   session_args
  -   session_classes
  -   session_config
  -   session_handler_class
  -   cookie_name
  -   cookie_domain
  -   cookie_path
  -   cookie_expires
  -   log
  -   debug
  -   mailhost
  -   mailhelo
  -   mailfrom
  -   maildebug
  -   mail_errors_to
  -   mail_errors_limit
  -   mail_errors_reset_time
  -   mail_errors_resend_time
  -   object_base
  -   object_app
  -   object_addpath
  -   object_stopdir
  -   object_fallback
  -   object_handler_class
  -   new
  -
  -
  - * Request object
  -
  -   apache_req
  -   config
  -   param
  -   component
  -   app
  -   thread
  -   request_count
  -   request_time
  -   iotype
  -   session_mgnt
  -   session_id
  -   session_state_id
  -   session_user_id
  -   exit
  -   log_file_start_pos
  -   error
  -   errors
  -   errdat1
  -   errdat2
  -   lastwarn
  -   cleanup_vars
  -   cleanup_packages
  -   initial_cwd
  -   messages
  -   default_messages
  -   startclock
  -   stsv_count
  -
  -
  - * Request configuration
  -
  -   allow
  -   urimatch
  -   mult_field_sep
  -   path
  -   debug
  -   options
  -   session_mode
  -
  -
  - * Request parameter
  -
  -   filename
  -   unparsed_uri
  -   uri
  -   path_info
  -   query_info
  -   language
  -   cookies
  -
  -
  - * Component object
  -
  -   config
  -   param
  -   req_running
  -   sub_req
  -   inside_sub
  -   exit
  -   path_ndx
  -   cwd
  -   ep1_compat
  -   phase
  -   sourcefile
  -   buf
  -   end_pos
  -   curr_pos
  -   sourceline
  -   sourceline_pos
  -   line_no_curr_pos
  -   document
  -   curr_node
  -   curr_repeat_level
  -   curr_checkpoint
  -   curr_dom_tree
  -   source_dom_tree
  -   syntax
  -   ifd
  -   ifdobj
  -   append_to_main_req
  -   prev
  -   strict
  -   import_stash
  -   exports
  -   curr_package
  -   eval_package
  -   main_sub
  -   prog
  -   prog_run
  -   prog_def
  -   code
  -
  -
  - * Component configuration
  -
  -   package
  -   debug
  -   options
  -   escmode
  -   input_escmode
  -   input_charset
  -   cache_key
  -   cache_key_options
  -   expires_func
  -   cache_key_func
  -   expires_in
  -   syntax
  -   recipe
  -   xsltstylesheet
  -   xsltproc
  -   compartment
  -   cleanup
  -
  -
  - * Component Parameter
  -
  -   inputfile
  -   outputfile
  -   input
  -   output
  -   sub
  -   import
  -   firstline
  -   mtime
  -   param
  -   fdat
  -   ffld
  -   object
  -   isa
  -   errors
  -   xsltparam 
  -
  -Configuration directives summary
  ---------------------------------
  -
  -
  -/* tComponentConfig */
  -
  -PACKAGE 
  -DEBUG 
  -OPTIONS 
  -ESCMODE 
  -INPUT_ESCMODE 
  -INPUT_CHARSET 
  -CACKE_KEY 
  -CACHE_KEY_OPTIONS
  -EXPIRES_FUNC 
  -CACHE_KEY_FUNC
  -EXPIRES_IN 
  -SYNTAX 
  -RECIPE 
  -XSLTSTYLESHEET 
  -XSLTPROC 
  -COMPARTMENT
  -
  -
  -/* tReqConfig */
  -
  -ALLOW 
  -URIMATCH 
  -MULTFIELDSEP 
  -PATH
  -DEBUG 
  -OPTIONS 
  -SESSION_MODE 
  -
  -
  -
  -/* tAppConfig */
  -
  -APPNAME 
  -APP_HANDLER_CLASS
  -SESSION_HANDLER_CLASS
  -SESSION_ARGS 
  -SESSION_CLASSES
  -SESSION_CONFIG 
  -COOKIE_NAME 
  -COOKIE_DOMAIN
  -COOKIE_PATH 
  -COOKIE_EXPIRES 
  -LOG 
  -DEBUG 
  -MAILDEBUG 
  -MAILHOST 
  -MAILHELO 
  -MAILFROM 
  -MAIL_ERRORS_TO
  -MAIL_ERRORS_LIMIT
  -MAIL_ERRORS_RESET_TIME
  -MAIL_ERRORS_RESEND_TIME
  -OBJECT_BASE
  -OBJECT_APP
  -OBJECT_ADDPATH
  -OBJECT_STOPDIR
  -OBJECT_FALLBACK
  -OBJECT_HANDLER_CLASS
  -
  -
  -When running under mod_perl, you can use this directly as Apache configuration
  -directives. They are case insensitiv. You don't need the use environment 
  -variables for configuration anymore. For this to work you have to add a
  -
  -  PerlModule Embperl
  -  AddModule embperl.c
  -  
  -before the first Embperl configuration directive. If you still like to
  -use enviroment variables, you must set
  -
  -  Embperl_UseEnv on
  -
  -For CGI mode still use enviroment variables.
  -
   
   exit
   ----
  @@ -644,205 +227,6 @@
   Apache::Exit)
   
   
  -Recipes
  --------
  -
  -Starting with 2.0b4 Embperl introduces the concept of recipes. A recipe basically
  -tells Embperl how a component should be build. While before 2.0b4 you could 
  -have only one processor that works on the request (the Embperl processor -
  -you're also able to define different syntaxes), now you can have multiple of them
  -arranged in a pipeline or even a tree. While you are able to give the full
  -recipe when calling Execute, this is not very convenient, so normally you
  -will only give the name of a recipe, either as parameter 'recipe' to
  -Execute or as EMBPERL_RECIPE in your httpd.conf. Of course you can have
  -different recipes for different locations and/or files. A recipe is constructed
  -out of providers. A provider can either be read from some source or do some
  -processing on a source. There is no restriction on what sort of data a provider
  -has as in- and output - you just have to make sure that output format of
  -a provider matches the input format of the next provider. In the current 
  -implementation Embperl comes with a set of built-in providers:
  -
  -- file                  read file data
  -- memory                get data from a scalar
  -- epparse               parse file into a Embperl tree structure
  -- epcompile             compile Embperl tree structure
  -- eprun                 execute Embperl tree structure
  -- eptostring            convert Embperl tree structure to string
  -- libxslt-parse-xml     parse xml source for libxslt
  -- libxslt-compile-xsl   parse and compile stylesheet for libxslt
  -- libxslt               do an xsl transformation via libxslt
  -- xalan-parse-xml       parse xml source for xalan
  -- xalan-compile-xsl     parse and compile stylesheet for xalan
  -- xalan                 do an xsl transformation via xalan
  -
  -There is a C interface, so new custom providers can be written, but what makes it
  -really useful is that the next release of Embperl will contain a
  -Perl interface, so you can write your own providers in Perl.
  -
  -The default recipe is named Embperl and contains the following providers:
  -
  -    +-----------+
  -    + file      +
  -    +-----------+
  -          |
  -          v
  -    +-----------+
  -    + epparse   +
  -    +-----------+
  -          |
  -          v
  -    +-----------+
  -    + epcompile +
  -    +-----------+
  -          |
  -          v
  -    +-----------+
  -    + eprun     +
  -    +-----------+
  -
  -This cause Embperl to behave like it has done in the past, when no
  -recipes existed.
  -
  -Each intermediate result could be cached. So for example you are able
  -to cache the already parsed XML or compiled stylesheet in memory,
  -without the need to reparse/recompile it over and over again.
  -
  -Another nice thing about recipes is that they are not static. A recipe
  -is defined by a recipe object. When a request comes in, Embperl calls
  -the get_recipe method of teh application object, which by default
  -calls the get_recipe of the named recipe object, which should return a array
  -that describes what Embperl has to do. The get_recipe methods can of course
  -build the array dynamically, looking, for example, at the request parameters
  -like filename, formvalues, mime type or whatever. For example if you
  -give a scalar as input the Embperl recipe replaces the file provider
  -with a memory provider. Additionally you can specify more then one
  -recipe (separated by spaces). Embperl will call all the new methods in
  -turn until the first one that returns undef. This way you can create recipes
  -that are known for what they are responsible. One possibility would be
  -to check the file extension and only return the recipe if it matches.
  -Much more sophisticated things are possible...
  -
  -See perldoc Embperl::Recipe for how to create your own provider.
  -
  -
  -XML, XSLT
  ----------
  -
  -As mentioned above, Embperl now contains a provider for doing XSLT transformations.
  -More XML will come in the next releases. The easiest thing is to use the XSLT
  -stuff thru the predefined recipes:
  -
  -    EmbperlLibXSLT      the result of Embperl will run thru the Gone libxslt
  -    EmbperlXalanXSLT    the result of Embperl will run thru Xalan-C
  -    EmbperlXSLT         the result of Embperl will run thru the XSL transformer
  -                        given by xsltproc or EMBPERL_XSLTPROC
  -
  -    LibXSLT             run source thru the Gone libxslt
  -    XalanXSLT           run source thru Xalan-C
  -    XSLT                run source thru the XSL transformer given by xsltproc or 
  -                        EMBPERL_XSLTPROC
  -
  -For example, including the result of an XSLT 
  -transformation into your html page could look like this:
  -
  -
  -    <html><head><title>Include XML via XSLT</title></head>
  -    <body>
  -
  -    <h1>Start xml</h1>
  -    [- Execute ({inputfile => 'foo.xml', recipe => 'EmbperlXalanXSLT', xsltstylesheet => 'foo.xsl'}) ; -]
  -    <h1>END</h1>
  -
  -    </body>
  -    </html>
  -
  -As you already guessed, the xsltstylesheet parameter gives the name of the xsl 
  -file. You can also use the EMBPERL_XSLTSTYLESHEET configuration directive
  -to set it from your configuration file.
  -
  -By setting EMBPERL_ESCMODE (or $escmode) to 15 you get the correct escaping
  -for XML.
  -
  -
  -Internationalisation (I18N)
  ----------------------------
  -
  -Starting with 2.0b6 Embperl has buildin support for multi-language applications.
  -There are two things to do. First inside your pages marks which parts are translateable,
  -by using the [= =]. Inside the [= =] blocks you could either put id, which are symbolic
  -names for the text, or you put the text in your primary lanaguage inside the blocks.
  -An example code could look like:
  -
  -[= heading =]
  -
  -<input name="foo" value="[=bar=]" type="submit">
  -
  -Now you run the embpmsgid.pl utility, which extracts all the ids from your page:
  -
  -    perl embpmsgid.pl -l de -l en -d msg.pl foo.htm
  -
  -This will create a file msg.pl which contains empty definitions for 'en' and 'de'
  -with all the ids found in the page. If the file msg.pl already exists, the definitions
  -are added. You can give more then one filename to the commandline. The format of the 
  -msg.pl file is written with Data::Dumper, so it can be easily read in via 'do' and 
  -postprocessed. As next step fill the empty definition with the correct translation.
  -The last thing to do, is tell Embperl which language set to use. You do this inside
  -the init method of the application object. Create an application object, which reads
  -in the message and when the init method is called, pass the correct one to Embperl.
  -There are tow methods $r -> message and $r -> default_message. Both returns a array
  -ref on which you can push your message hashs. Embperl consults first the message array
  -and if not found afterwards the default_message array for the correct message.
  -Because both are arrays you can push multiple message sets on it. This is handy when
  -your application object calls it's base class, which also may define some messages.
  -Here is an example:
  -
  -
  -    package My::App ; 
  -
  -    @ISA = ('Embperl::App') ;
  -
  -    %messages =
  -        (
  -        'de' =>
  -            {
  -            'heading' => '�berschrift',
  -            'bar'     => 'Absenden',
  -            },
  -        'en' =>
  -            {
  -            'heading' => 'Heading',
  -            'bar'     => 'Submit',
  -            },
  -        ) ;
  -
  -    sub init
  -        {
  -        my $self = shift ;
  -        my $r = $self -> curr_req ;
  -
  -        $lang = $r -> param -> language || 'de' ;
  -        push @{$r -> messages}, $messages{$lang} ;
  -        push @{$r -> default_messages}, $messages{'en'} if ($lang ne 'en') ;
  -        }
  -
  -    1 ;
  -
  -
  -Just load this package and set EMBPERL_APP_HANDLER_CLASS to My::App, then 
  -Embperl will call the init method on the start of the request.
  -
  -If you are using Embperl::Object, you may instead save it as a file in your
  -document hiearchie make the filename know to Embperl::Object with the 
  -EMBPERL_OBJECT_APP directive and Embperl::Object will retrieve the correct
  -application file, just in the same way it retrieves other files.
  -
  -NOTE: When using with Embperl::Object, don't make a package declaration at
  -the top of your application object, Embperl::Object assign it's own namespace
  -to the application object.
  -
  -In case you need to retrieve a text inside your Perl code, you can do this
  -with $r -> gettext('bar')
  -
   
   
   
  
  
  
  1.37      +7 -3      embperl/Embperl/Mail.pm
  
  Index: Mail.pm
  ===================================================================
  RCS file: /home/cvs/embperl/Embperl/Mail.pm,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- Mail.pm	23 Jan 2004 06:50:56 -0000	1.36
  +++ Mail.pm	11 Feb 2005 14:52:10 -0000	1.37
  @@ -31,7 +31,7 @@
   @ISA = qw(Embperl);
   
   
  -$VERSION = '2.0b10';
  +$VERSION = '2.0';
   
   
   sub _quote_hdr
  @@ -271,7 +271,11 @@
   
   =head2 Configuration
   
  -Some default values could be setup via environement variables
  +Some default values could be setup via environement variables.
  +
  +B<IMPORTANT:> For now Embperl::Mail does B<not> honour the Embperl
  +configuration directives in your httpd.conf. Only values set via the
  +environment are accepted (e.g. via SetEnv or PerlSetEnv).
   
   
   =head2 EMBPERL_MAILHOST
  
  
  
  1.9       +10 -7     embperl/eg/web/config.pl
  
  Index: config.pl
  ===================================================================
  RCS file: /home/cvs/embperl/eg/web/config.pl,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- config.pl	16 Aug 2004 05:58:30 -0000	1.8
  +++ config.pl	11 Feb 2005 14:52:10 -0000	1.9
  @@ -92,7 +92,7 @@
            },
           { menu => 'Introduction',           uri => 'pod/intro/', sub =>
               [
  -            { menu => 'Embperl',            uri => 'Intro.htm',                 file => { en => 'Intro.pod', 'de' => 'IntroD.pod'},
  +            { menu => 'Embperl',            uri => 'Intro.htm',                 file => 'Intro.pod', #file => { en => 'Intro.pod', 'de' => 'IntroD.pod'},
                     desc => { en => 'Introduction of Embperl basic capablitities', 
                               de => 'Einf�hrung in die grundlegenden M�glichkeiten von Embperl' }},
               { menu => 'Embperl::Object',    uri => 'IntroEmbperlObject.htm',    file => 'IntroEmbperlObject.pod',
  @@ -108,13 +108,16 @@
           },
           { menu => 'Documentation',          uri => 'pod/doc/', sub => 
               [
  -                { menu => 'README.v2',            uri => 'README.v2',             file => { en => 'README.v2', de => 'README.v2'},
  -                  desc => { en => 'Contains differences to Embperl 1.3 and all docs for Embperl 2 that have not made it yet into the real docs',
  -                            de => 'Enth�lt die Unterschiede zu Embperl 1.3 und alle Dokumentation die noch nicht in eigentliche Dokumentation eingearbeitet wurde' }},
  +                { menu => 'README',            uri => 'README',          file => { en => 'README', de => 'README'},
  +                  desc => { en => 'Short overview',
  +                            de => 'Kurz�berblick' }},
  +                { menu => 'README.v2',            uri => 'README.v2',          file => { en => 'README.v2', de => 'README.v2'},
  +                  desc => { en => 'Contains what\'s new in Embperl 2.0 and differences to Embperl 1.3',
  +                            de => 'Enth�lt die Neuigkeiten von Embperl 2.0 und die Unterschiede zu Embperl 1.3' }},
                   { menu => 'Configuration',           uri => 'Config.htm',               file => { en => 'Config.pod', de => 'Config.pod'},
                     desc => { en => 'Configuration and calling of Embperl', 
                               de => 'Konfiguration und Aufruf von Embperl' }},
  -                { menu => 'Embperl',            uri => 'Embperl.htm',               file => { en => 'Embperl.pod', de => 'EmbperlD.pod'},
  +                { menu => 'Embperl',            uri => 'Embperl.htm',               file => 'Embperl.pod', #{ en => 'Embperl.pod', de => 'EmbperlD.pod'},
                     desc => { en => 'Main Embperl documentation', de => 'Hauptdokumentation' }},
                   { menu => 'Embperl::Object',    uri => 'EmbperlObject.htm',         file => 'Embperl/Object.pm',
                     desc => { en => 'Documentation for creating object-oriented websites', 
  @@ -195,8 +198,8 @@
           
            },        #{ menu => 'FAQ',                    uri => 'pod/Faq.htm',               file => 'Faq.pod' },
           #{ menu => 'Examples',               uri => 'examples/' },
  -        { menu => 'Download',                uri => 'pod/doc/Embperl.-page-13-.htm'},    #sect_44' },
  -        { menu => 'Support',                uri => 'pod/doc/Embperl.-page-12-.htm' },
  +        { menu => 'Download',                uri => 'pod/doc/Embperl.-page-17-.htm'},    #sect_44' },
  +        { menu => 'Support',                uri => 'pod/doc/Embperl.-page-16-.htm' },
           { menu => 'Changes',                 uri => 'pod/Changes.htm',           file => 'Changes.pod' },
           #{ menu => 'Sites using Embperl',    uri => 'pod/Sites.htm',             file => 'Sites.pod' },
           { menu => 'More infos',          uri => 'db/', sub => 
  
  
  
  1.3       +0 -7      embperl/eg/web/pod/doc/index.htm
  
  Index: index.htm
  ===================================================================
  RCS file: /home/cvs/embperl/eg/web/pod/doc/index.htm,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- index.htm	22 Oct 2002 05:39:51 -0000	1.2
  +++ index.htm	11 Feb 2005 14:52:10 -0000	1.3
  @@ -3,10 +3,6 @@
   [$ if $_[0] -> param -> language eq 'de' $]
   Hier finden Sie die vollst�ndige Dokumentation von Embperl 2. Sie enth�lt eine Referenz aller Features.
   <br><br>
  -<b><u>HINWEIS:</u> Die Dokumentation f�r Embperl ist im Moment noch nicht vollst�ndig. README.v2 enth�lt alle wichtigen
  -Informationen. Deshalb ist es unbedingt n�tig README.v2 f�r den Einsatz von Embperl 2 zu lesen.
  -Im Zweifelsfall sind die Informationen in README.v2 richtig und die Dokumentation falsch.</b>
  -<br><br>
   F�r schreitweise Tutorials gehen Sie bitte auf die <a href="../intro/">Einf�hrungsseite</a>.
   <br>
   Details zur Installation k�nnen Sie in der <a href="../INSTALL.htm">Installationsanweisung</a> nachlesen.
  @@ -14,9 +10,6 @@
   Here you find the whole documention of Embperl 2. 
   This contains the full reference of all Embperl features.
   <br><br>
  -<b><u>NOTE:</u> The documentation for Embperl 2 is not finished yet. Make sure you read README.v2. 
  -In doubt README.v2 is correct and the docs are wrong.</b>
  -<br><br>
   For step by step tutorials go to the <a href="../intro/">introduction page</a>.
   <br>
   Details about the installation can be found on the <a href="../INSTALL.htm">installationpage</a>.
  
  
  
  1.13      +133 -56   embperl/podsrc/Config.spod
  
  Index: Config.spod
  ===================================================================
  RCS file: /home/cvs/embperl/podsrc/Config.spod,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- Config.spod	21 Apr 2004 06:11:12 -0000	1.12
  +++ Config.spod	11 Feb 2005 14:52:10 -0000	1.13
  @@ -253,6 +253,27 @@
    [- Execute ('/path/to/head.html') -]
    
   
  +=head2 Debugging
  +
  +Starting with 2.0b2 Embperl files can debugged via the interactive debugger.
  +The debugger shows the Embperl page source along with the correct linenumbers. 
  +You can do anything you can do inside a normal Perl programm via the debugger,
  +e.g. show variables, modify variables, single step, set breakpoints etc.
  +
  +You can use the Perl interacive command line debugger via
  +
  +    perl -d embpexec.pl file.epl  
  +
  +or if you prefer a graphical debugger, try ddd (http://www.gnu.org/software/ddd/)
  +it's a great tool, also for debugging any other perl script:
  +
  +    ddd --debugger 'perl -d embpexec.pl file.epl'
  +
  +
  +NOTE: embpexec.pl could be found in the Embperl source directory
  +
  +If you want to debug your pages, while running under mod_perl, Apache::DB is the
  +right thing. Apache::DB is available from CPAN.
   
   
   
  @@ -593,9 +614,12 @@
   
   =head2 *CFG $application / Embperl_OBJECT_ADDPATH / object_addpath / 1.3b1 / no 
   
  -Additional directories where Embperl::Object searches for pages.
  -This search through the searchpath is always performed if in a call to Execute no path for the
  -file is given.
  +Additional directories where Embperl::Object searches for pages.
  +
  +This search through the searchpath is always performed if in a call to Execute no path for the
  +
  +file is given.
  +
    
   In F<httpd.conf> or as evironment variable directories are
   separated by C<;> (on Unix C<:> works also). The parameter for C<Execute> and
  @@ -603,37 +627,68 @@
   This path is
   B<always> appended to the searchpath.
   
  -=head2 *CFG $application / Embperl_OBJECT_REQPATH / object_reqpath / 2.0b12 / no 
  -
  -Additional directories where Embperl::Object searches for files for the inital request.
  -If a file is requested, but cannot be found at the given location, the directories
  -given in the this path are additionaly search for the file. This applies only to
  -the initial filename given to Embperl::Object and B<not> to files called via
  -Execute.  
  - 
  -In F<httpd.conf> or as evironment variable directories are
  -separated by C<;> (on Unix C<:> works also). The parameter for C<Execute> and
  -the application object method expects/returns an array reference.
  -
  -Example:
  -
  -if you say
  -
  -    Embperl_Object_Reqpath  /a:/b:/c
  -
  -and you request 
  -
  -    /x/index.epl
  -
  -it will try
  -
  -    /x/index.epl
  -    /a/index.epl
  -    /b/index.epl
  -    /c/index.epl
  -
  -and take the first one that is found.
  -
  +=head2 *CFG $application / Embperl_OBJECT_REQPATH / object_reqpath / 2.0b12 / no 
  +
  +
  +
  +Additional directories where Embperl::Object searches for files for the inital request.
  +
  +If a file is requested, but cannot be found at the given location, the directories
  +
  +given in the this path are additionaly search for the file. This applies only to
  +
  +the initial filename given to Embperl::Object and B<not> to files called via
  +
  +Execute.  
  +
  + 
  +
  +In F<httpd.conf> or as evironment variable directories are
  +
  +separated by C<;> (on Unix C<:> works also). The parameter for C<Execute> and
  +
  +the application object method expects/returns an array reference.
  +
  +
  +
  +Example:
  +
  +
  +
  +if you say
  +
  +
  +
  +    Embperl_Object_Reqpath  /a:/b:/c
  +
  +
  +
  +and you request 
  +
  +
  +
  +    /x/index.epl
  +
  +
  +
  +it will try
  +
  +
  +
  +    /x/index.epl
  +
  +    /a/index.epl
  +
  +    /b/index.epl
  +
  +    /c/index.epl
  +
  +
  +
  +and take the first one that is found.
  +
  +
  +
   
   =head2 *CFG $application / Embperl_OBJECT_STOPDIR / object_stopdir / 1.3b1 / no 
   
  @@ -1019,23 +1074,40 @@
   
   NOT YET IMPLEMENTED!
   
  -
  -
  -=head2 *CFG $component / Embperl_Top_Include / top_include / 2.0b10 / no 
  -
  -Give a pieces of code that is include at the very top of every file.
  -
  -Example:
  -
  -    Embperl_Top_Include "use MY::Module;"
  -
  -This will cause MY::Module to be used in every page. Note that 
  -Embperl_Top_Include must contain valid Perl code and must be
  -ended with a semikolon.
  -
  -B<NOTE:> If you pass top_include as parameter to Execute it is
  -only used in case the code is compiled (or recompiled) and not cached.
  -
  +
  +
  +
  +
  +=head2 *CFG $component / Embperl_Top_Include / top_include / 2.0b10 / no 
  +
  +
  +
  +Give a pieces of code that is include at the very top of every file.
  +
  +
  +
  +Example:
  +
  +
  +
  +    Embperl_Top_Include "use MY::Module;"
  +
  +
  +
  +This will cause MY::Module to be used in every page. Note that 
  +
  +Embperl_Top_Include must contain valid Perl code and must be
  +
  +ended with a semikolon.
  +
  +
  +
  +B<NOTE:> If you pass top_include as parameter to Execute it is
  +
  +only used in case the code is compiled (or recompiled) and not cached.
  +
  +
  +
   
   =head2 *CFG $component / Embperl_CACHE_KEY / cache_key / 2.0b1 / no
   
  @@ -1249,11 +1321,16 @@
   
   A hashref that contains all cookies send by the browser to the server.
   
  -=head2 *PARAM $request / / cgi  / 2.0b12 / no
  -
  -Holds the CGI.pm object, which is used for file upload. If no file uploaded data
  -is send tho the request, this member is undefined.
  -
  +=head2 *PARAM $request / / cgi  / 2.0b12 / no
  +
  +
  +
  +Holds the CGI.pm object, which is used for file upload. If no file uploaded data
  +
  +is send tho the request, this member is undefined.
  +
  +
  +
   =head2 *PARAM $component / / inputfile / 1.0.0 / no
   
   Give the name of the file that should be processed, e.g.
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: embperl-cvs-unsubscribe@perl.apache.org
For additional commands, e-mail: embperl-cvs-help@perl.apache.org