John Drago wrote:
If anyone is interested,
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/h
tml/frlrfSystemWebUI.asp?frame=true is the msdn section dealing with the
System.Web.UI namespace.

My guess is that 80% of what's there is unnecessary to get the desired
functionality.  By chance or fate, 80% of what's there has no place in a
perl implementation of similar functionality, because of the tools
already available within perl.

Sorry I have not gotten back to you on this yet. I wanted to give the .Net stuff a good read first before I started an informed discussion with you about this, which I still have not done :( . I would like to extend the Apache::ASP framework to be able to handle extensions that can fully replicate the .NET taglibs, and I understand that the XMLSubs falls well short of that. I am not sure about other aspects of the newer objects architecture, but there may be a place for those also.

To help focus the discussion, it may be useful to know exactly what
feature(s) would be useful for you to begin work on as a shorter term goal.
It seemed like the dynamic list boxes was a place you wanted to start
at, but more input here would be good.

Regards,

Josh


------------------------------------------------------------------- I figure we would need to emulate the functionality of: System.Web.UI (as a base class, and defining certain constants).

o System.Web.UI.Control (base class, inherited by all default and
custom controls).
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/h
tml/frlrfSystemWebUIControlClassTopic.asp?frame=true


o System.Web.UI.ControlCollection (this functionality could be rolled
into System.Web.UI.Control).
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/h
tml/frlrfSystemWebUIControlCollectionClassTopic.asp?frame=true


o System.Web.UI.IPostBackDataHandler & IPostBackEventHandler
(inheritable interface that allows controls to handle how their postback
data is handled).
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/h
tml/frlrfSystemWebUIIPostBackDataHandlerClassTopic.asp?frame=true


o System.Web.UI.Page (represents an .aspx file, and is used as a base
class when creating a web forms class in codebehind mode).
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/h
tml/frlrfSystemWebUIPageClassTopic.asp?frame=true


o System.Web.UI.PageParser (parses .aspx files).
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/h
tml/frlrfSystemWebUIPageParserClassTopic.asp?frame=true


o System.Web.UI.TemplateBuilder (supports the PageParser in building a
template and the child controls it contains).
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/h
tml/frlrfSystemWebUITemplateBuilderClassTopic.asp?frame=true


o System.Web.UI.TemplateControl (inheritable base class. Provides the
Page class and UserControl class a base set of functionality).
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/h
tml/frlrfSystemWebUITemplateControlClassTopic.asp?frame=true


o System.Web.UI.UserControl (represents an .ascx file which implements
and/or extends the TemplateControl class to produce some functionality
or html).
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/h
tml/frlrfSystemWebUIUserControlClassTopic.asp?frame=true


o System.Web.UI.UserControlControlBuilder (Does a recursive descent
into the sub-controls contained within a UserControl, building them as
it goes, so that UserControls can contain other controls inside them).
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/h
tml/frlrfSystemWebUIUserControlControlBuilderClassTopic.asp?frame=true


-------------------------------------------------------------------

Let me make myself clear.  I do not want to duplicate the entire ASP.NET
thing in perl.  I merely wish to skim the good stuff off the top and
move along.  In fact, there's more I dislike about ASP.NET than there is
I *do* like about it.  However, I recognize some things there that could
save me loads of time on a large-scale project.

Mason has some similar functionality with its *.mas components
http://www.masonbook.com/book/chapter-1.mhtml#TOC-ANCHOR-3 but lacks the
PostBack way of dealing with round-trip forms (as with server-side form
validation).  It also lacks the built-in ability to do things like
append listitems to a <select> tag.

_______________________________________________________________

John Drago | Chief Architect of Software Development
E-com Media Group, Inc. [www.e-commedia.com] office
::
303.790.7940 x25
email
::
[EMAIL PROTECTED]




E - b u s i n e s s w i t h D i m e n s i o n TM


| -----Original Message-----
| From: Josh Chamas [mailto:[EMAIL PROTECTED]
| Sent: Monday, March 15, 2004 5:19 PM
| To: [EMAIL PROTECTED]
| Subject: Re: .NET-style components and development
| | John Drago wrote:
| >
| > What I want to do would look something like so:
| > ---------------------------------------------------------------
| > [listbox.asp]
| >
| > <asp:listbox id="list1">
| > <asp:listitem>Select One</asp:listitem>
| > </asp:listbox>
| >
| > <%
| > # Dynamically add items to the list before it's rendered:
| > $Page->list1->Items->add(
| > asp::listitem->new( Value => "1", Text => "Blue" ) );
| > $Page->list1->Items->add(
| > asp::listitem->new( Value => "2", Text => "Red" ) );
| >
| > # or, iterate through items within the listbox:
| > foreach my $item ( $Page->list1->Items )
| > {
| > if( $item->Value == 1 )
| > {
| > $item->Text = "Blue [this is my favorite...isn't it yours?]";
| > }# end if()
| > }# end foreach()
| >
| > %>
| > ---------------------------------------------------------------
| >
| > Something tells me that this isn't too far away from what we already


| > have with Apache::ASP...that with some extra methods inherited from | > a package subclassed by asp::listbox and asp::listitem, it is 100% | > possible.
| >
| > I would need some help with where to bless the $Page object into the


| > namespace the ASP pages are executed in.
| >
| | If you set up a $List object in global.asa, it will be seen in | includes and scripts, but not in the scope of the XMLSubs packages. | So you might create it in the main package to reference from like | this:
| | # global.asa
| use vars qw($List);
| sub Script_OnStart {
| $List = $main::List = List->new();
| }
| sub Script_OnEnd {
| $List->can('DESTROY') && $List->DESTROY;
| $List = $main::List = undef;
| }
| | Then in the script, you can:
| | <%
| $List->->add('list1',
| ListItem->new( Value => "1", Text => "Blue" )
| );
| %>
| | And then you can:
| | <asp:listbox id="list1">
| <asp:listitem>Select One</asp:listitem>
| </asp:listbox>
| | And have XMLSubs defined to handle asp:listbox & asp:listitem | properly, looking at the $main::List object.
| | If you really want to build objects through code though, you might | check out CGI.pm, which has plenty of methods for doing exactly this.


| Output from a CGI.pm object should be compatible with Apache::ASP.
| | > Apache::ASP does *almost* everything I want it to do, and this kind | > of extension would make it a lot more powerful in my opinion.
| | What is the extension in particular that you are looking for? Is there


| something particular about <asp:listbox /> handling that you like in | ASP.NET that you want implemented as is? Particularly what features | of ASP.NET do you think should make it into Apache::ASP ?
| | Regards,
| | Josh
| |
________________________________________________________________________
| Josh Chamas, Founder | NodeWorks - http://www.nodeworks.com
| Chamas Enterprises Inc. | NodeWorks Directory -
http://dir.nodeworks.com
| http://www.chamas.com | Apache::ASP - http://www.apache-asp.org
| | | | | ---------------------------------------------------------------------
| To unsubscribe, e-mail: [EMAIL PROTECTED]
| For additional commands, e-mail: [EMAIL PROTECTED]




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]





--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to