From: Chris W. <la...@us...> - 2004-11-30 02:26:46
|
Update of /cvsroot/openinteract/OpenInteract2/doc/Manual In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6184/Manual Modified Files: Templates.pod Log Message: inline template examples Index: Templates.pod =================================================================== RCS file: /cvsroot/openinteract/OpenInteract2/doc/Manual/Templates.pod,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** Templates.pod 17 Feb 2004 04:30:11 -0000 1.12 --- Templates.pod 30 Nov 2004 02:26:37 -0000 1.13 *************** *** 20,29 **** template processing engine. Here's an example: ! [* INCLUDE examples/templates_login_template | linenum *] When run through the template processing engine with a normal user object in the 'OI.login' key, this will result in: ! [* INCLUDE examples/templates_login_results1 | linenum *] So the information between the '[%' and ' %]' symbols --- 20,31 ---- template processing engine. Here's an example: ! <p>Welcome back ! <font color="red">[% OI.login.full_name %]</font>!</p> When run through the template processing engine with a normal user object in the 'OI.login' key, this will result in: ! <p>Welcome back ! <font color="red">Charlie Brown</font>!</p> So the information between the '[%' and ' %]' symbols *************** *** 32,36 **** might have seen: ! [* INCLUDE examples/templates_login_results2 | linenum *] OpenInteract provides a number of tools for you in every template you --- 34,39 ---- might have seen: ! <p>Welcome back ! <font color="red">Peppermint Patty</font>!</p> OpenInteract provides a number of tools for you in every template you *************** *** 57,61 **** have a subroutine like this: ! [* INCLUDE examples/templates_userlist_handler | linenum *] (The actual code would have lots of good things like error checking, --- 60,87 ---- have a subroutine like this: ! sub list_time_limit { ! my ( $self ) = @_; ! my $request = CTX->request; ! my $time_limit = $self->param( 'time_limit' ) ! || $request->param( 'time_limit' ); ! ! # This SQL is Sybase-specific, but should be clear ! my $where = 'datediff( minute, last_access, getdate() ) <= 30'; ! ! # Note: 'fetch_group' returns an arrayref of objects. ! my $user_class = CTX->lookup_object( 'user' ); ! my $user_list = eval { ! $user_class->fetch_group({ ! where => $where, ! order => 'last_access', ! }) ! }; ! my %params = ( ! user_list => $user_list, ! time_limit => $time_limit, ! ); ! return $self->generate_content( ! \%params, { name => 'mypkg::user_list' } ); ! } (The actual code would have lots of good things like error checking, *************** *** 70,74 **** And your template might look like: ! [* INCLUDE examples/templates_userlist_template | linenum *] There are a few things at work here: --- 96,118 ---- And your template might look like: ! 1 : [%- DEFAULT theme = OI.theme_properties -%] ! 2 : ! 3 : <h2>User Listing</h2> ! 4 : ! 5 : <p>Users with accesses in the last <b>[% time_limit %]</b> minutes. ! 6 : ! 7 : <table border="0" cellpadding="4"> ! 8 : ! 9 : [% PROCESS header_row( [ 'Username', 'Full Name', 'Last Access' ] ) %] ! 10: ! 11: [% FOREACH user_object = user_list %] ! 12: <tr align="center" valign="middle"> ! 13: <td>[% user_object.login_name %]</td> ! 14: <td>[% user_object.full_name %]</td> ! 15: <td>[% user_object.last_access %]</td> ! 16: </tr> ! 17: [% END %] ! 18: ! 19: </table> There are a few things at work here: *************** *** 98,102 **** 'user_object.full_name' could transparently translate to either: ! [* INCLUDE examples/templates_userobject_properties | indent(2) *] Here we're using the 'user_object' variable (obviously) as an --- 142,147 ---- 'user_object.full_name' could transparently translate to either: ! $user_object->full_name() ! $user_object->{full_name} Here we're using the 'user_object' variable (obviously) as an *************** *** 108,112 **** =item 3. ! We access the OpenInteract plugin ('OI') and find the theme properties from it ('OI.theme_properties', line 1). These get assigned to a variable so we can use it multiple times throughout the template --- 153,157 ---- =item 3. ! We access the OpenInteract2 plugin ('OI') and find the theme properties from it ('OI.theme_properties', line 1). These get assigned to a variable so we can use it multiple times throughout the template *************** *** 127,131 **** replace the 'user_list' template with the following: ! [* INCLUDE examples/templates_userlist_template_modified | linenum *] If we did this, we would not have to change B<a single line> of our --- 172,185 ---- replace the 'user_list' template with the following: ! <h2>User Listing</h2> ! ! <p>Users with accesses in the last <b>[% time_limit %]</b> minutes. ! ! <ul> ! [% FOREACH user_object = user_list %] ! <li>[% user_object.full_name %] ([% user_object.login_name %]) ! accessed the system at [% user_object.last_access %]</li> ! [% END %] ! </ul> If we did this, we would not have to change B<a single line> of our *************** *** 230,239 **** following to our action configuration: ! [* INCLUDE examples/templates_userlist_action_declare_source | indent 2 *] The handler now doesn't even need to pass a template source, so the C<return> can be modified like this: ! [* INCLUDE examples/templates_userlist_handler_implicit | linenum 16 *] Now we can use the same action code with multiple template --- 284,298 ---- following to our action configuration: ! [userlist template_source] ! list_time_limit = mypkg::user_list The handler now doesn't even need to pass a template source, so the C<return> can be modified like this: ! my %params = ( ! user_list => $user_list, ! time_limit => $time_limit, ! ); ! return $self->generate_content( \%params ); Now we can use the same action code with multiple template *************** *** 241,248 **** that most people will see and one that uses very little layout for visually impaired folks. Further, we'll assume that the actions for ! visually impaired folks begin with a 'V_', so our action configuration might look like: ! [* INCLUDE examples/templates_userlist_actions | indent 2 *] =head2 Loading templates --- 300,315 ---- that most people will see and one that uses very little layout for visually impaired folks. Further, we'll assume that the actions for ! visually impaired folks begin with a 'v_', so our action configuration might look like: ! [timelimit] ! class = OpenInteract2::Action::UserList ! method = list_time_limit ! template_source = mypkg::userlist_normal ! ! [v_timelimit] ! class = OpenInteract2::Action::UserList ! method = list_time_limit ! template_source = mypkg::userlist_plain =head2 Loading templates |