Loading ...
Sorry, an error occurred while loading the content.

Re: A newbie question

Expand Messages
  • Ellers
    ... Definitely keep UseStrict turned on. When I was learning Perl I didn t quite get why its useful - now I understand and its definitely a good thing to have
    Message 1 of 14 , Mar 18, 2002
    • 0 Attachment
      >Let me start with a confession that I'm a newbie to perl and
      >modules although I've got truckloads of experience on Windows
      >ASP side. Anyway, I need a bit of wizdom on how to use
      >packages with Apache::ASP. Please read on.
      >
      >In my httpd.conf I have
      >
      >PerlSetVar UseStrict 1

      Definitely keep UseStrict turned on. When I was learning Perl I didn't quite get why its useful - now I understand and its definitely a good
      thing to have turned on!

      >then I have a script - called "Login.pl" - that goes like this:
      >
      ><html>
      ><%
      >$Response->Include($Server->MapPath("/pls/Common/consts.pl"),"");
      >$Response->Write(blabla()."<BR>");
      >$Response->Write("A_VARIABLE=".$A_VARIABLE."<BR>");
      >%>
      ></html>
      >
      >The contents of /pls/Common/consts.pl is
      >
      ><%
      >our $A_VARIABLE = "whatever";
      >sub blabla {
      > "blabla";
      >}
      >%>

      What you're after is something like:

      use MyPackageToBeWritten;

      or

      require '/pls/Common/consts.pl';


      However with Apache::ASP there is an easier way - and due to some of the quirks of mod_perl (I'm _not_ an expert on mod_perl...) a much
      more reliable way: Put your reusable variables/subs in your global.asa file.


      In your instance it'd be something like:

      << global.asa >>

      use vars qw( $A_VARIABLE );

      sub doSomething
      {
      return "blahblah";
      }

      << >>


      Further to that, if you're looking at doing a login system, I have just recently done one that works really nicely - and requires _zero_ code to
      your actual .asp files to ensure that the user is logged in. It may not suit your needs, but this is what I added to my global.asa:

      << global.asa >>

      sub Script_OnStart
      {
      unless ( $Request->ServerVariables( 'SCRIPT_NAME') eq '/login.asp')
      {
      unless ( validateLogin( ))
      {
      my %param = ( 'u'=>$Request->ServerVariables('REQUEST_URI'));
      $Response->Redirect( $Server->URL('/login.asp', \%param ));
      }
      }
      }

      sub validateLogin
      {
      return defined( $Session->{User} );
      }

      sub doLogin
      {
      # This can be called by login.asp when the user presses a "login" button with user id/password.

      # Depending how you validate, check the user/password, and store something in $Session->{User}
      }

      << >>

      Your login.asp file is exempt from the check, but every other .asp file will redirect to the login script.

      Note also that the redirection saves the current request URI - after a successful login I redirect back to the users original request.


      >Should I really make a separate Perl package out of consts.pl
      >and then import the variables from package consts into Login.pl?
      >This seems a little absurd because per "PerlSetVar UniquePackages
      >0" in httpd.conf, both Login.pl and consts.pl are in the same
      >package, and there should be a simple way for any script in
      >the package to use variables declared in other scripts of the
      >package. Or am I wrong? Please let me know.
      >

      Not wrong, just leverage global.asa better and it should make your problems go away. If you have extensive modules you can factor them
      out into separate packages but that can be done later.

      The ASP gurus on this list may have better suggestions; I'm a bit of a newbie

      Ellers



      ---------------------------------------------------------------------
      To unsubscribe, e-mail: asp-unsubscribe@...
      For additional commands, e-mail: asp-help@...
    • Jim Helm
      This isn t specific to Apache:ASP, but I ve seen a lot of good advice here, and hopefully someone has already been through this. I was just wondering if anyone
      Message 2 of 14 , Mar 20, 2002
      • 0 Attachment
        This isn't specific to Apache:ASP, but I've seen a lot of good advice
        here, and hopefully someone has already been through this.

        I was just wondering if anyone had used/knows of anything for perl
        similar to phpLens. I haven't actually used it, but it looks pretty
        impressive. I'd prefer to stick with perl, though. I've searched
        through CPAN, and on google, and haven't found anything obviously like
        phpLens for perl, but there's a lot out there and I may have just missed
        it. The closest I think I've seen so far is DBIx::HTMLView, but it's
        only for mySQL and mSQL (needs some extra coding for other DBD drivers -
        I think).

        Basically, I'm just looking for some tools for generating things like
        master/detail editing forms and backends. I'm not looking to avoid
        coding entirely, just for something to make life easier. I don't need
        all the bells and whistles of phpLens - though they would be nice. And
        I need to be able to make updates - simply displaying data is fairly
        trivial, and I wouldn't need to ask for tools to do that - they are a
        dime a dozen (though not all of the same quality!).

        My alternative will probably be to use Oracle Forms (since we have a
        site license for nearly every Oracle product for internal use only), but
        I really want stick to perl if I can - mostly so I'm not tied to
        Oracle's RDBMS in the future. If you've read this far thanks. If you
        have suggestions, thanks a lot!

        I suppose if there's nothing like phpLens, I'll either have to use
        Forms, roll my own perlLens, or switch to PHP and buy phpLens.

        Thanks again,

        Jim

        -----Original Message-----
        From: constfilin [mailto:constfilin@...]
        Sent: Monday, March 18, 2002 5:58 PM
        To: asp@...
        Subject: A newbie question


        greetings -

        Let me start with a confession that I'm a newbie to perl and
        modules although I've got truckloads of experience on Windows ASP side.
        Anyway, I need a bit of wizdom on how to use
        packages with Apache::ASP. Please read on.

        In my httpd.conf I have

        PerlSetVar UseStrict 1
        PerlSetVar UniquePackages 0

        then I have a script - called "Login.pl" - that goes like this:

        <html>
        <% $Response->Include($Server->MapPath("/pls/Common/consts.pl"),"");
        $Response->Write(blabla()."<BR>");
        $Response->Write("A_VARIABLE=".$A_VARIABLE."<BR>");
        %>
        </html>

        The contents of /pls/Common/consts.pl is

        <%
        our $A_VARIABLE = "whatever";
        sub blabla {
        "blabla";
        }
        %>

        Now, when I execute Login.pl, I get this error in errors_log
        "Variable "$A_VARIABLE" is not imported at Login.pl line 5."

        I would like to get rid of this error without having
        "PerlSetVar UseStrict 0" in httpd.conf. But how? Using
        "no strict" in Login.pls does not help, and all perl
        keywords "local", "my", and "our" are scoped to the current
        file, eval or block. Using no keyword at all to declare
        $A_VARIABLE gives the same error, but now in file consts.pl.

        Should I really make a separate Perl package out of consts.pl and then
        import the variables from package consts into Login.pl? This seems a
        little absurd because per "PerlSetVar UniquePackages
        0" in httpd.conf, both Login.pl and consts.pl are in the same
        package, and there should be a simple way for any script in
        the package to use variables declared in other scripts of the
        package. Or am I wrong? Please let me know.

        Thank you in advance

        Constantine



        ---------------------------------------------------------------------
        To unsubscribe, e-mail: asp-unsubscribe@...
        For additional commands, e-mail: asp-help@...


        ---------------------------------------------------------------------
        To unsubscribe, e-mail: asp-unsubscribe@...
        For additional commands, e-mail: asp-help@...
      • Ellers
        ... Its a good question... I haven t seen anything myself which suprised me. It would have been really handy for me too. With DBI/DBD I would ve thought a set
        Message 3 of 14 , Mar 20, 2002
        • 0 Attachment
          At 6:56 PM -0800 20/3/02, Jim Helm wrote:
          >This isn't specific to Apache:ASP, but I've seen a lot of good advice
          >here, and hopefully someone has already been through this.
          >...
          >Basically, I'm just looking for some tools for generating things like
          >master/detail editing forms and backends. I'm not looking to avoid
          >coding entirely, just for something to make life easier.


          Its a good question... I haven't seen anything myself which suprised
          me. It would have been really handy for me too. With DBI/DBD I
          would've thought a set of classes could be designed to make it
          easy(er) to browse and edit rows.

          e.g.

          <% # browse_books.asp #

          use DBD::Forms;

          ### prepare a Forms RowBrowser - note that the database
          ### handle could be oracle, mysql, etc...
          my $browser = new DBD::Forms::RowBrowser( $dbh );

          ### prepare the browser to look at rows from the book table
          $browser->prepare(
          Table => 'Book',
          SelectColumns => [qw/ title isbn authorlist year/],
          SortColumn => 'title',
          RowsPerPage => 10
          );

          ### format the title column as a link to book details
          $browser->format(
          Column => 'title',
          FormatSub => sub {
          my ( $title, $hashRef ) = @_;
          my $isbn = $hashref->{ 'isbn' };
          my $url = $Server->URL( 'details.asp', { isbn => $isbn });
          return "<a href=\"$url\">$title</a>";
          },
          CellCSS => 'data',
          );

          ### print 10 rows from the table... could use default layout or
          ### templates (a'la CGI::FormBuilder)
          print $browseRows->printHTML( Template => 'table_template.html' );

          %>


          I had a quick go at it when I first started the current project but
          the deadlines made it very hard to spend the time needed to keep it
          generic and intuitive. I had to go back to doing the app-specific
          version :(


          Ellers


          ---------------------------------------------------------------------
          To unsubscribe, e-mail: asp-unsubscribe@...
          For additional commands, e-mail: asp-help@...
        • Joshua Chamas
          ... I have always rolled by own application by application, but my apps have always had to be pretty tight to the database for high performance with mixed
          Message 4 of 14 , Mar 21, 2002
          • 0 Attachment
            Jim Helm wrote:
            >
            > This isn't specific to Apache:ASP, but I've seen a lot of good advice
            > here, and hopefully someone has already been through this.
            >
            > I was just wondering if anyone had used/knows of anything for perl
            > similar to phpLens. I haven't actually used it, but it looks pretty
            > impressive. I'd prefer to stick with perl, though. I've searched
            > through CPAN, and on google, and haven't found anything obviously like
            > phpLens for perl, but there's a lot out there and I may have just missed
            > it. The closest I think I've seen so far is DBIx::HTMLView, but it's
            > only for mySQL and mSQL (needs some extra coding for other DBD drivers -
            > I think).
            >

            I have always rolled by own application by application, but my
            apps have always had to be pretty tight to the database for
            high performance with mixed OLAP/OLTP environments.

            If you feel that RAD does not have to be GUI RAD, I might look
            at these:

            CGI::FormBuilder ( promises 4x code reduction )
            DBIx::XHTML_Table

            If you want something closer do the database, and don't mind doing
            your own HTML, check out:

            DBIx::Recordset
            Alzabo

            They at least abstract DBI slightly away from you.

            > all the bells and whistles of phpLens - though they would be nice. And
            > I need to be able to make updates - simply displaying data is fairly
            > trivial, and I wouldn't need to ask for tools to do that - they are a

            phpLens looks nice. You you want something that is more of a CMS in perl,
            you can try Bricolage or Mason:

            http://bricolage.thepirtgroup.com/
            http://www.masonhq.com/

            Sorry, I don't think any of these quite hit it on the head for
            you, but I thought I'd try! Best of luck, and if you find anything
            interesting please share it with the rest of us, as it seems
            to be a fairly common problem. Also, you might try the mod_perl
            list & I am sure you will get some opinions :)

            --Josh
            _________________________________________________________________
            Joshua Chamas Chamas Enterprises Inc.
            NodeWorks Founder Huntington Beach, CA USA
            http://www.nodeworks.com 1-714-625-4051

            ---------------------------------------------------------------------
            To unsubscribe, e-mail: asp-unsubscribe@...
            For additional commands, e-mail: asp-help@...
          • Kulp, David
            I must admit that there s nothing that s really it in CPAN. A few months ago I spent a lot of time looking through the modules that Joshua described and
            Message 5 of 14 , Mar 21, 2002
            • 0 Attachment
              I must admit that there's nothing that's really "it" in CPAN. A few months
              ago I spent a lot of time looking through the modules that Joshua described
              and never found what I wanted. I didn't know about phpLens until now, but
              it looks sweet. Instead, I've been writing some Apache::ASP tags that, if I
              do say so myself, nicely abstract away a lot of the database code. I'm only
              concerned with view and search (not editting (data entry), which I believe
              to be a separate can of worms for all but the simplest databases). I hope
              to release it some day.

              The basic idea is

              <dbb:form>
              <dbb:table table="foo" DSN=$DSN />
              </dbb:form>

              and it magically inserts a paginated, CSS savvy, searchable table to your
              HTML document.
              It relies on simple meta-data in the database to control things like layout
              of numerics, etc. and you can write your own little perl "rendering" methods
              to display a cell of a table however you like. Additional tags
              <dbb:selection> and <dbb:qset> allow for exporting a selection set or the
              results of a query to a tab delimited or Excel output.

              Sound interesting to anyone besides me? If so, I might put more energy into
              making a releasable package.

              -d

              > -----Original Message-----
              > From: Joshua Chamas [mailto:joshua@...]
              > Sent: Thursday, March 21, 2002 6:08 PM
              > To: Jim Helm
              > Cc: asp@...
              > Subject: Re: OT: (slightly) RAD RDBMS tools for perl/Apache::ASP
              >
              >
              > Jim Helm wrote:
              > >
              > > This isn't specific to Apache:ASP, but I've seen a lot of
              > good advice
              > > here, and hopefully someone has already been through this.
              > >
              > > I was just wondering if anyone had used/knows of anything for perl
              > > similar to phpLens. I haven't actually used it, but it looks pretty
              > > impressive. I'd prefer to stick with perl, though. I've searched
              > > through CPAN, and on google, and haven't found anything
              > obviously like
              > > phpLens for perl, but there's a lot out there and I may
              > have just missed
              > > it. The closest I think I've seen so far is
              > DBIx::HTMLView, but it's
              > > only for mySQL and mSQL (needs some extra coding for other
              > DBD drivers -
              > > I think).
              > >
              >
              > I have always rolled by own application by application, but my
              > apps have always had to be pretty tight to the database for
              > high performance with mixed OLAP/OLTP environments.
              >
              > If you feel that RAD does not have to be GUI RAD, I might look
              > at these:
              >
              > CGI::FormBuilder ( promises 4x code reduction )
              > DBIx::XHTML_Table
              >
              > If you want something closer do the database, and don't mind doing
              > your own HTML, check out:
              >
              > DBIx::Recordset
              > Alzabo
              >
              > They at least abstract DBI slightly away from you.
              >
              > > all the bells and whistles of phpLens - though they would
              > be nice. And
              > > I need to be able to make updates - simply displaying data is fairly
              > > trivial, and I wouldn't need to ask for tools to do that -
              > they are a
              >
              > phpLens looks nice. You you want something that is more of a
              > CMS in perl,
              > you can try Bricolage or Mason:
              >
              > http://bricolage.thepirtgroup.com/
              > http://www.masonhq.com/
              >
              > Sorry, I don't think any of these quite hit it on the head for
              > you, but I thought I'd try! Best of luck, and if you find anything
              > interesting please share it with the rest of us, as it seems
              > to be a fairly common problem. Also, you might try the mod_perl
              > list & I am sure you will get some opinions :)
              >
              > --Josh
              > _________________________________________________________________
              > Joshua Chamas Chamas Enterprises Inc.
              > NodeWorks Founder Huntington Beach, CA USA
              > http://www.nodeworks.com 1-714-625-4051
              >
              > ---------------------------------------------------------------------
              > To unsubscribe, e-mail: asp-unsubscribe@...
              > For additional commands, e-mail: asp-help@...
              >

              ---------------------------------------------------------------------
              To unsubscribe, e-mail: asp-unsubscribe@...
              For additional commands, e-mail: asp-help@...
            • Ellers
              ... Definitely sounds interesting to me ;) I m sure others would be too Ellers ... To unsubscribe, e-mail: asp-unsubscribe@perl.apache.org For additional
              Message 6 of 14 , Mar 21, 2002
              • 0 Attachment
                >...
                >
                ><dbb:form>
                ><dbb:table table="foo" DSN=$DSN />
                ></dbb:form>
                >
                >and it magically inserts a paginated, CSS savvy, searchable table to your
                >HTML document.
                >...
                >
                >Sound interesting to anyone besides me? If so, I might put more energy into
                >making a releasable package.

                Definitely sounds interesting to me ;)

                I'm sure others would be too

                Ellers


                ---------------------------------------------------------------------
                To unsubscribe, e-mail: asp-unsubscribe@...
                For additional commands, e-mail: asp-help@...
              • Jim Helm
                Looks like CGI::FormBuilder/Template::Toolkit combined with DBIx::Recordset is probably my best bet. I knew about them individually, but for some reason just
                Message 7 of 14 , Mar 21, 2002
                • 0 Attachment
                  Looks like CGI::FormBuilder/Template::Toolkit combined with
                  DBIx::Recordset is probably my best bet. I knew about them
                  individually, but for some reason just didn't think to use them in
                  combination to achieve 95% of what I wanted... I'll still have to code,
                  but if I didn't have to code anything, what fun would it be! And if I
                  ever do find anything better I'll be sure to pass it along. FormBuilder
                  is pretty impressive looking so far - wish I head read over it more
                  thoroughly before asking the question. Though it was a good exercise, I
                  think.

                  Thanks for the virtual whack upside the head. (doh!)

                  Jim

                  -----Original Message-----
                  From: Joshua Chamas [mailto:joshua@...]
                  Sent: Thursday, March 21, 2002 6:08 PM
                  To: Jim Helm
                  Cc: asp@...
                  Subject: Re: OT: (slightly) RAD RDBMS tools for perl/Apache::ASP


                  Jim Helm wrote:
                  >
                  > This isn't specific to Apache:ASP, but I've seen a lot of good advice
                  > here, and hopefully someone has already been through this.
                  >
                  > I was just wondering if anyone had used/knows of anything for perl
                  > similar to phpLens. I haven't actually used it, but it looks pretty
                  > impressive. I'd prefer to stick with perl, though. I've searched
                  > through CPAN, and on google, and haven't found anything obviously like

                  > phpLens for perl, but there's a lot out there and I may have just
                  > missed it. The closest I think I've seen so far is DBIx::HTMLView,
                  > but it's only for mySQL and mSQL (needs some extra coding for other
                  > DBD drivers - I think).
                  >

                  I have always rolled by own application by application, but my
                  apps have always had to be pretty tight to the database for
                  high performance with mixed OLAP/OLTP environments.

                  If you feel that RAD does not have to be GUI RAD, I might look at these:

                  CGI::FormBuilder ( promises 4x code reduction )
                  DBIx::XHTML_Table

                  If you want something closer do the database, and don't mind doing your
                  own HTML, check out:

                  DBIx::Recordset
                  Alzabo

                  They at least abstract DBI slightly away from you.

                  > all the bells and whistles of phpLens - though they would be nice.
                  > And I need to be able to make updates - simply displaying data is
                  > fairly trivial, and I wouldn't need to ask for tools to do that - they

                  > are a

                  phpLens looks nice. You you want something that is more of a CMS in
                  perl, you can try Bricolage or Mason:

                  http://bricolage.thepirtgroup.com/
                  http://www.masonhq.com/

                  Sorry, I don't think any of these quite hit it on the head for you, but
                  I thought I'd try! Best of luck, and if you find anything interesting
                  please share it with the rest of us, as it seems to be a fairly common
                  problem. Also, you might try the mod_perl list & I am sure you will get
                  some opinions :)

                  --Josh _________________________________________________________________
                  Joshua Chamas Chamas Enterprises Inc.
                  NodeWorks Founder Huntington Beach, CA USA
                  http://www.nodeworks.com 1-714-625-4051


                  ---------------------------------------------------------------------
                  To unsubscribe, e-mail: asp-unsubscribe@...
                  For additional commands, e-mail: asp-help@...
                • Ellers
                  ... Getting more off topic now, but thought I d mention about FormBuilder... I find CGI::FormBuilder really useful and have come to prefer it to use CGI
                  Message 8 of 14 , Mar 22, 2002
                  • 0 Attachment
                    At 11:27 PM -0800 21/3/02, Jim Helm wrote:
                    >Looks like CGI::FormBuilder/Template::Toolkit combined with
                    >DBIx::Recordset is probably my best bet.


                    Getting more off topic now, but thought I'd mention about FormBuilder...

                    I find CGI::FormBuilder really useful and have come to prefer it to
                    use CGI methods or HTML code directly.

                    To use it effectively in Apache::ASP several settings are useful:

                    javascript => 0,
                    header => 0,

                    Although the javascript one can sometimes be useful, I found it made
                    life more difficult than it was worth.

                    Also, with multistage forms (e.g. purchaser details on page 1,
                    product details page 2, card details page 3 etc) I came up with a few
                    tricks which I can post if anyone is interested.

                    Most of the time I used FormBuilder's inbuilt $form->render() method
                    because it was easier than doing a template; it dawned on me that it
                    would make sense to add another template method for FormBuilder,
                    something like:

                    $form->render( ASPInclude => 'inc_user_details.asp' )

                    or whatever, and instead of HTML::Template variables,
                    CGI::FormBuilder could just supply a hashref to the include file
                    allowing stuff like:

                    [inc_user_details.asp]

                    <p>User Name: <%= $cgiform->{'field_user_name'} %>

                    etc


                    This isn't existing functionality in FormBuilder, but if anyone else
                    thinks its a worthy idea it could be recommended to the author.

                    Ellers


                    >
                    >-----Original Message-----
                    >From: Joshua Chamas [mailto:joshua@...]
                    >Sent: Thursday, March 21, 2002 6:08 PM
                    >To: Jim Helm
                    >Cc: asp@...
                    >Subject: Re: OT: (slightly) RAD RDBMS tools for perl/Apache::ASP
                    >
                    >
                    >Jim Helm wrote:
                    >>
                    >> This isn't specific to Apache:ASP, but I've seen a lot of good advice
                    >> here, and hopefully someone has already been through this.
                    >>
                    >> I was just wondering if anyone had used/knows of anything for perl
                    >> similar to phpLens. I haven't actually used it, but it looks pretty
                    >> impressive. I'd prefer to stick with perl, though. I've searched
                    >> through CPAN, and on google, and haven't found anything obviously like
                    >
                    >> phpLens for perl, but there's a lot out there and I may have just
                    >> missed it. The closest I think I've seen so far is DBIx::HTMLView,
                    >> but it's only for mySQL and mSQL (needs some extra coding for other
                    >> DBD drivers - I think).
                    >>
                    >
                    >I have always rolled by own application by application, but my
                    >apps have always had to be pretty tight to the database for
                    >high performance with mixed OLAP/OLTP environments.
                    >
                    >If you feel that RAD does not have to be GUI RAD, I might look at these:
                    >
                    > CGI::FormBuilder ( promises 4x code reduction )
                    > DBIx::XHTML_Table
                    >
                    >If you want something closer do the database, and don't mind doing your
                    >own HTML, check out:
                    >
                    > DBIx::Recordset
                    > Alzabo
                    >
                    >They at least abstract DBI slightly away from you.
                    >
                    >> all the bells and whistles of phpLens - though they would be nice.
                    >> And I need to be able to make updates - simply displaying data is
                    >> fairly trivial, and I wouldn't need to ask for tools to do that - they
                    >
                    >> are a
                    >
                    >phpLens looks nice. You you want something that is more of a CMS in
                    >perl, you can try Bricolage or Mason:
                    >
                    > http://bricolage.thepirtgroup.com/
                    > http://www.masonhq.com/
                    >
                    >Sorry, I don't think any of these quite hit it on the head for you, but
                    >I thought I'd try! Best of luck, and if you find anything interesting
                    >please share it with the rest of us, as it seems to be a fairly common
                    >problem. Also, you might try the mod_perl list & I am sure you will get
                    >some opinions :)
                    >
                    >--Josh _________________________________________________________________
                    >Joshua Chamas Chamas Enterprises Inc.
                    >NodeWorks Founder Huntington Beach, CA USA
                    >http://www.nodeworks.com 1-714-625-4051
                    >
                    >
                    >---------------------------------------------------------------------
                    >To unsubscribe, e-mail: asp-unsubscribe@...
                    >For additional commands, e-mail: asp-help@...


                    ---------------------------------------------------------------------
                    To unsubscribe, e-mail: asp-unsubscribe@...
                    For additional commands, e-mail: asp-help@...
                  • Jim Helm
                    Actually, using asp includes for the templating sounds great... I haven t looked at the code, but I wouldn t think it would be that hard to add. It d be
                    Message 9 of 14 , Mar 22, 2002
                    • 0 Attachment
                      Actually, using asp includes for the templating sounds great... I
                      haven't looked at the code, but I wouldn't think it would be that hard
                      to add. It'd be great not to have to learn yet another pseudo-language
                      to accomplish this (Template::Toolkit or HTML::Toolkit) when Apache::ASP
                      is something I already know! I'll start looking at the FormBuilder
                      hooks, and see how involved it is - don't know if I have the time to
                      actually implement it, but it's a great idea.

                      I'm cc'ing Nate on this too, see what he thinks.

                      Jim

                      > -----Original Message-----
                      > From: Ellers [mailto:ellers@...]
                      |
                      |
                      > Most of the time I used FormBuilder's inbuilt $form->render() method
                      > because it was easier than doing a template; it dawned on me that it
                      > would make sense to add another template method for FormBuilder,
                      > something like:
                      >
                      > $form->render( ASPInclude => 'inc_user_details.asp' )
                      >
                      > or whatever, and instead of HTML::Template variables,
                      > CGI::FormBuilder could just supply a hashref to the include file
                      > allowing stuff like:
                      >
                      > [inc_user_details.asp]
                      >
                      > <p>User Name: <%= $cgiform->{'field_user_name'} %>
                      >
                      > etc
                      >
                      >
                      > This isn't existing functionality in FormBuilder, but if anyone else
                      > thinks its a worthy idea it could be recommended to the author.
                      >
                      > Ellers
                      >
                      >


                      ---------------------------------------------------------------------
                      To unsubscribe, e-mail: asp-unsubscribe@...
                      For additional commands, e-mail: asp-help@...
                    • Nathan Wiger
                      Sure, the more templating engines the better! :-) The only caveat here is that I definitely don t have the time to implement this, and besides, I don t know
                      Message 10 of 14 , Mar 22, 2002
                      • 0 Attachment
                        Sure, the more templating engines the better! :-)

                        The only caveat here is that I definitely don't have the time to implement this,
                        and besides, I don't know ASP. Andy Wardley sent me a big patch to enable
                        Template Toolkit support, so if somebody wants to take a whack at this and send
                        me a corresponding patch, I will gladly add it. Look near the bottom of
                        render(), where there are some if/elsif/else statements looking for the type of
                        template specified. This shouldn't be too hard to slot in there.

                        -Nate

                        ----- Original Message -----
                        From: "Jim Helm" <jjhelm@...>
                        To: "'Ellers'" <ellers@...>
                        Cc: <asp@...>; <nate@...>
                        Sent: Friday, March 22, 2002 4:36 PM
                        Subject: RE: OT: (slightly) RAD RDBMS tools for perl/Apache::ASP -> FormBuilder


                        > Actually, using asp includes for the templating sounds great... I
                        > haven't looked at the code, but I wouldn't think it would be that hard
                        > to add. It'd be great not to have to learn yet another pseudo-language
                        > to accomplish this (Template::Toolkit or HTML::Toolkit) when Apache::ASP
                        > is something I already know! I'll start looking at the FormBuilder
                        > hooks, and see how involved it is - don't know if I have the time to
                        > actually implement it, but it's a great idea.
                        >
                        > I'm cc'ing Nate on this too, see what he thinks.
                        >
                        > Jim
                        >
                        > > -----Original Message-----
                        > > From: Ellers [mailto:ellers@...]
                        > |
                        > |
                        > > Most of the time I used FormBuilder's inbuilt $form->render() method
                        > > because it was easier than doing a template; it dawned on me that it
                        > > would make sense to add another template method for FormBuilder,
                        > > something like:
                        > >
                        > > $form->render( ASPInclude => 'inc_user_details.asp' )
                        > >
                        > > or whatever, and instead of HTML::Template variables,
                        > > CGI::FormBuilder could just supply a hashref to the include file
                        > > allowing stuff like:
                        > >
                        > > [inc_user_details.asp]
                        > >
                        > > <p>User Name: <%= $cgiform->{'field_user_name'} %>
                        > >
                        > > etc
                        > >
                        > >
                        > > This isn't existing functionality in FormBuilder, but if anyone else
                        > > thinks its a worthy idea it could be recommended to the author.
                        > >
                        > > Ellers
                        > >
                        > >
                        >


                        ---------------------------------------------------------------------
                        To unsubscribe, e-mail: asp-unsubscribe@...
                        For additional commands, e-mail: asp-help@...
                      • Joshua Chamas
                        ... Sounds pretty cool to me. I do not have my head around sharing taglibs like this easily yet, but you might break some ground here if you pursue this work.
                        Message 11 of 14 , Mar 22, 2002
                        • 0 Attachment
                          "Kulp, David" wrote:
                          >
                          > I must admit that there's nothing that's really "it" in CPAN. A few months
                          > ago I spent a lot of time looking through the modules that Joshua described
                          > and never found what I wanted. I didn't know about phpLens until now, but
                          > it looks sweet. Instead, I've been writing some Apache::ASP tags that, if I
                          > do say so myself, nicely abstract away a lot of the database code. I'm only
                          > concerned with view and search (not editting (data entry), which I believe
                          > to be a separate can of worms for all but the simplest databases). I hope
                          > to release it some day.
                          >
                          > The basic idea is
                          >
                          > <dbb:form>
                          > <dbb:table table="foo" DSN=$DSN />
                          > </dbb:form>
                          >

                          Sounds pretty cool to me. I do not have my head around sharing taglibs
                          like this easily yet, but you might break some ground here if you pursue
                          this work. Though flexible the XMLSubsMatch is kind of limiting in that
                          someone cannot just "register" their XMLSubs namespace on the fly. If you
                          did pursue this we could look at how these packages could be easily
                          installed with CPAN like ease. If we had enough "standard" extensions
                          like this, Apache::ASP could be an ever increasingly useful platform.

                          --Josh
                          _________________________________________________________________
                          Joshua Chamas Chamas Enterprises Inc.
                          NodeWorks Founder Huntington Beach, CA USA
                          http://www.nodeworks.com 1-714-625-4051

                          ---------------------------------------------------------------------
                          To unsubscribe, e-mail: asp-unsubscribe@...
                          For additional commands, e-mail: asp-help@...
                        • Ellers
                          I ve done a first cut at modifying CGI::FormBuilder to use ASP s $Response- Include() as a templating mechanism. In an ASP file your form is created:
                          Message 12 of 14 , Mar 26, 2002
                          • 0 Attachment
                            I've done a first cut at modifying CGI::FormBuilder to use ASP's $Response->Include() as a templating mechanism.

                            In an ASP file your form is created:

                            <<<

                            <html>
                            <head>
                            <title>Try Formbuilder with ASP</title>
                            </head>
                            <body>
                            <h2>A really simple CGI::FormBuilder example using ASP</h2>
                            <!-- before ASP/CGI::FormBuilder stuff -->
                            <%

                            require CGI::FormBuilder;

                            my $form = CGI::FormBuilder->new
                            (
                            header => 0,
                            method => 'GET',
                            fields => [qw/email /],
                            javascript => 0,
                            reset => 0,
                            required => [qw/email /],
                            validate => { email => 'EMAIL' },
                            sticky => 1, # 0 or 1
                            );

                            $form->field ( name => 'email', validate => 'EMAIL', size => 25 );

                            if ( $form->submitted( ) && $form->validate( ) )
                            {
                            print $form->confirm( );
                            }
                            else
                            {
                            print $form->render
                            (
                            submit => 'Submit',
                            template => {
                            type => 'ASPInclude',
                            template => 'inc_show_params.asp',
                            response => $Response,
                            }
                            );

                            }
                            %>

                            >>>



                            Note, in particular, the $form->render() method at the bottom. I pass $Response as a parameter as its a simple and effective way to ensure
                            that CGI::FormBuilder gets the appropriate $Response object (which may be in some odd namespace).

                            The file inc_show_params.asp is a demo that just dumps the parameters:

                            <<<
                            <p>This is my asp file

                            <p>Below is a dump of all arguments:
                            <p><hr>
                            <p><pre>
                            <%

                            use Data::Dumper;
                            $Data::Dumper::Indent = 1;

                            my ( @args ) = @_;
                            print $Server->HTMLEncode( Data::Dumper->Dump([@args], [qw(*args)]));

                            %>
                            </pre></p><hr>
                            >>>


                            The code below is a more-or-less replacement using ASP for the default CGI::FormBuilder style:

                            <<<
                            <p>This is a demo form - this content is in a separate ASP file included by CGI::FormBuilder.
                            <p>Fields marked with "*" must be supplied.

                            <%

                            my ( $formRef ) = @_;

                            my ( $fieldsArrayRef ) = $formRef->{ 'fields' };

                            if ( $formRef->{'invalid'}) { %>

                            <p><b>There were <%= $formRef->{'invalid'} %> error<%= ( $formRef->{'invalid'} > 1 ? 's' : '' ) %> in your submission.</b></p>

                            <%
                            }
                            %>

                            <p>
                            <%= $formRef->{ 'start' } %>
                            <table border="1" cellpadding="5">

                            <%

                            foreach my $fieldRef ( @{$fieldsArrayRef}) {

                            %>

                            <tr>
                            <td>
                            <%= ( $fieldRef->{ 'invalid' } ? '<font color="red">' : '' ) %>
                            <%= $fieldRef->{ 'label' } %>
                            <%= ( $fieldRef->{ 'required' } ? '*' : '' ) %>
                            <%= ( $fieldRef->{ 'invalid' } ? '</font>' : '' ) %>
                            </td>
                            <td><%= $fieldRef->{ 'field' } %>
                            </td>
                            </tr>

                            <% } %>

                            <tr>
                            <td colspan="2" align="center">
                            <%= $formRef->{ 'reset' } %>
                            <%= $formRef->{ 'submit' } %>
                            </td>
                            </tr>
                            </table>
                            <%= $formRef->{ 'end' } %>
                            >>>



                            Phew... hope this post isn't too long!


                            To achieve all this was surprisingly easy:

                            > diff /usr/local/lib/site_perl/CGI/FormBuilder.pm /my/dodgy/CGI/Customised_FormBuilder.pm

                            953c955
                            < if (ref $args{template} eq 'HASH' && $args{template}{type} eq 'TT2') {
                            ---
                            > if (ref $args{template} eq 'HASH' && $args{template}{type} =~ m/^(TT2|ASPInclude)$/ ) { # added by Ellers
                            1178a1183,1207
                            >
                            > } elsif ($tmpltype eq 'ASPInclude') { # Added by Ellers
                            >
                            > eval { require Apache::ASP };
                            > puke "Can't use templates because the Apache::ASP is not installed!" if $@;
                            >
                            > my ( $aspFile, $aspResponse, $aspContentRef, $aspArgRef );
                            > $aspFile = $tmplopt{template}
                            > || puke "ASP Include not specified";
                            > $aspResponse = $tmplopt{response}
                            > || puke "ASP Response not specified";
                            >
                            > # special fields
                            > $tmplvar{'start'} = $formtag;
                            > $tmplvar{'submit'} = $submit;
                            > $tmplvar{'reset'} = $reset;
                            > $tmplvar{'end'} = '</form>';
                            > $tmplvar{'jshead'} = $jsfunc;
                            > $tmplvar{'invalid'} = $self->{state}{invalid};
                            > $tmplvar{'fields'} = [ map $tmplvar{field}{$_},
                            > @{ $self->{field_names} } ];
                            > $aspArgRef = \%tmplvar;
                            >
                            > $aspContentRef = $aspResponse->TrapInclude( $aspFile, $aspArgRef );
                            > $outhtml = $header . $$aspContentRef;


                            If that's a bit cumbersome, I've uploaded various files including my dodgy modified FormBuilder.pm:

                            http://members.iinet.net.au/~ellers/cgi-formbuilder/

                            PLEASE NOTE:
                            1. I've done a few other changes to the above, such as spaces between multiple submit buttons etc, but it should be ok...
                            2. The server above doesn't run Apache::ASP so best to save the files and run on your own server

                            TODO:
                            - check templating work for $form->confirm()
                            - add overall doco, etc


                            It'd be great if anyone who is interested in this work could give it a go and send comments through. If/when its reliable enough I can
                            submit it as a patch to the 'real' thing.

                            Ellers



                            ---------------------------------------------------------------------
                            To unsubscribe, e-mail: asp-unsubscribe@...
                            For additional commands, e-mail: asp-help@...
                          • Jim Helm
                            Great work! I started to take that approach and decided to try a callback, or passing a hashref that would get populated, instead of calling another page. That
                            Message 13 of 14 , Mar 26, 2002
                            • 0 Attachment
                              Great work!

                              I started to take that approach and decided to try a callback, or
                              passing a hashref that would get populated, instead of calling another
                              page. That would make the render function more adaptable to other
                              frameworks, instead of having to add in specific code for each one. I
                              have done much yet, but it's essentially what you have except instead of
                              calling $Response->Include at the end of render, it just assigns that
                              tmplvar hash to the hashref I pass in so all the various html chunks can
                              be used directly by the main asp script - I'm a mininalist, so main.asp
                              calling render calling another form.asp script going against my grain a
                              bit (please, no flames here - it's just a personal preference!).
                              Hopefully I'll have time to work on it today and post the results.

                              Jim


                              ---------------------------------------------------------------------
                              To unsubscribe, e-mail: asp-unsubscribe@...
                              For additional commands, e-mail: asp-help@...
                            Your message has been successfully submitted and would be delivered to recipients shortly.