--- loncom/html/adm/help/tex/Developer_Tutorial.tex 2003/09/22 19:07:59 1.3 +++ loncom/html/adm/help/tex/Developer_Tutorial.tex 2014/04/25 16:02:41 1.7 @@ -1,3 +1,5 @@ +\label{Developer_Tutorial} + \section{Adding a Handler to LON-CAPA} In this section, we will add a brand new {}``handler'' to LON-CAPA. @@ -33,7 +35,7 @@ for the log files, or make a symlink the \item LON-CAPA must be installed and running. \item \textbf{Perl}: You're going to need to know some or you will not understand the code. You don't need to be intimately familiar with the many hundreds -of libraries Perl has, though, which is much harder then learning +of libraries Perl has, though, which is much harder than learning the language. \item Knowledge of the Apache server is not required for this tutorial, but {}``real work'' may require more information then is given here. @@ -254,7 +256,7 @@ double check the entry to make sure it i it is typed correctly, and that all the lines are present. If it is still incorrect, please ask for help on the \texttt{lon-capa-dev@mail.lon-capa.org} list, including a copy of your \texttt{loncapa\_apache.conf} file -in the email; either something is wrong that is beyond the scope of +in the e-mail; either something is wrong that is beyond the scope of this document(other system configuration issues) or you really can't find the error. @@ -279,7 +281,7 @@ help you out here. But I do know the cod as a last resort try to figure out what is different. If you are absolutely stumped, please ask for help on the \texttt{lon-capa-dev@mail.lon-capa.org} list, including a copy of your \texttt{lontutorial.pm} file in the -email; either something is wrong that is beyond the scope of this +e-mail; either something is wrong that is beyond the scope of this document (other system configuration issues) or you really can't find the error. @@ -361,7 +363,7 @@ To send back a proper HTTP response, add ~~~~if~(\$r->header\_only)~\{ -~~~~~~~~if~(\$ENV\{'browser.mathml'\})~\{ +~~~~~~~~if~(\$env\{'browser.mathml'\})~\{ ~~~~~~~~~~~~\$r->content\_type('text/xml'); @@ -379,7 +381,7 @@ To send back a proper HTTP response, add ~~~~\#~Send~header,~don't~cache~this~page -~~~~if~(\$ENV\{'browser.mathml'\})~\{ +~~~~if~(\$env\{'browser.mathml'\})~\{ ~~~~~~~~\$r->content\_type('text/xml'); @@ -451,7 +453,7 @@ use~Apache::lonnavmaps; Remove the {}``Hello world!'' line and replace it with this: \begin{lyxcode} -\$ENV\{'form.condition'\}~=~1; +\$env\{'form.condition'\}~=~1; my~\$renderArgs~=~\{~'cols'~=>~{[}Apache::lonnavmaps::resource{]}, @@ -468,11 +470,11 @@ Line by line: contains routines that help render navmaps. For more information, see later in this manual or type \texttt{man Apache::lonnavmaps}. This ensures these routines are loaded into memory. -\item \texttt{\textbf{\$ENV\{'form.condition'\} = 1;}}: This is an an argument +\item \texttt{\textbf{\$env\{'form.condition'\} = 1;}}: This is an an argument being passed to the Apache::lonnavmaps::render routine in a rather unorthodox way. This will cause the navmap to render all of the resources, by default, except for what we explicitly exclude. Since we're not -going to exclude anything (which we would do with \texttt{\$ENV\{'form.filter'\}}), +going to exclude anything (which we would do with \texttt{\$env\{'form.filter'\}}), all resources will be shown. \item \texttt{\textbf{my \$renderArgs\ldots{}\$r\};}}: Since the \texttt{render} routine takes a \emph{lot} of arguments, the \texttt{render} routine @@ -522,7 +524,7 @@ In doing this, we'll learn: The first thing we need to do to accomplish this is to add an HTML form to the screen so we have something to submit. Just above the -\texttt{\$ENV\{'form.condition'\}} line, add the following: +\texttt{\$env\{'form.condition'\}} line, add the following: \begin{lyxcode} \$r->print(\char`\"{}\char`\"{}); @@ -547,15 +549,15 @@ submit button won't do much. \subsubsection{Seeing The Incoming Data} LON-CAPA automatically processing incoming POST data and exposes it -to you in the \texttt{\%ENV} hash. The data will appear in \texttt{\$ENV\{'form.\$varname'\}}, +to you in the \texttt{\%env} hash. The data will appear in \texttt{\$env\{'form.\$varname'\}}, where \texttt{\$varname} is the variable name of the HTML form element. In this case, since we have an element named {}``submission'', a -{}``1'' will appear in \texttt{\$ENV\{'form.submission'\}} when +{}``1'' will appear in \texttt{\$env\{'form.submission'\}} when we hit the {}``Increment'' button. To see this, add the following after the \texttt{bodytag} call: \begin{lyxcode} -if~(\$ENV\{'form.submission'\})~\{ +if~(\$env\{'form.submission'\})~\{ ~~~~\$r->print('

Form~submitted.

'); @@ -570,10 +572,10 @@ Reload the tutorial code into the server When you hit {}``Increment'', {}``Form submitted.'' will appear. Note this only applies to POST'ed data. If you use GET, the data will -appear on the query string. For your code, this will show up in \texttt{\$ENV\{QUERY\_STRING\}}. +appear on the query string. For your code, this will show up in \texttt{\$env\{QUERY\_STRING\}}. If you want to invoke LON-CAPA's processing on that string, so you -see the variables in \texttt{\%ENV}, use -\texttt{Apache::loncommon::get\_unprocessed\_cgi(\$ENV\{QUERY\_STRING\});}. +see the variables in \texttt{\%env}, use +\texttt{Apache::loncommon::get\_unprocessed\_cgi(\$env\{QUERY\_STRING\});}. This is particularly useful for cases where input may be coming in via either POST or GET. @@ -623,7 +625,7 @@ Add the following code before the \textt code: \begin{lyxcode} -foreach~(keys~\%ENV)~\{ +foreach~(keys~\%env)~\{ ~~~~if~(substr(\$\_,~0,~10)~eq~'form.symb.')~\{ @@ -656,7 +658,7 @@ you can't depend on being on the same sy Let's go ahead and retrieve the hash we're going to store. If it doesn't already exist, it will end up getting created implicitly. Before the -\texttt{foreach (keys \%ENV)}, add +\texttt{foreach (keys \%env)}, add \begin{lyxcode} my~\%countHash~=~Apache::lonnet::restore('tutorial'); @@ -678,7 +680,7 @@ Replace the \texttt{foreach} loop that i this: \begin{lyxcode} -foreach~(keys~\%ENV)~\{ +foreach~(keys~\%env)~\{ ~~~~if~(substr(\$\_,~0,~10)~eq~'form.symb.')~\{ @@ -741,7 +743,7 @@ internationalized. ``Internationalizatio adding hooks to code to make it easy to ``localize''. ``Localizing'' a program means taking advantage of those hooks and create a file that describes to the LON-CAPA web system how to display LON-CAPA in a -language other then English. +language other than English. For more complete information about Internationalization and Localization, please refer to the Internationalization chapter. For @@ -770,7 +772,7 @@ in calls to \texttt{\&mt}. I see the fol them for practice) \begin{lyxcode} -if~(\$ENV{'form.submission'})~{ +if~(\$env{'form.submission'})~{ ~~~~\$r->print('

'.\&mt('Form submitted').'

'); @@ -874,7 +876,7 @@ sub~handler~\{ ~~~~if~(\$r->header\_only)~\{ -~~~~~~~~if~(\$ENV\{'browser.mathml'\})~\{ +~~~~~~~~if~(\$env\{'browser.mathml'\})~\{ ~~~~~~~~~~~~\$r->content\_type('text/xml'); @@ -892,7 +894,7 @@ sub~handler~\{ ~~~~\#~Send~header,~don't~cache~this~page -~~~~if~(\$ENV\{'browser.mathml'\})~\{ +~~~~if~(\$env\{'browser.mathml'\})~\{ ~~~~~~~~\$r->content\_type('text/xml'); @@ -924,7 +926,7 @@ sub~handler~\{ -~~~~if~(\$ENV\{'form.submission'\})~\{ +~~~~if~(\$env\{'form.submission'\})~\{ ~~~~~~~~\$r->print('

'~.~\&mt('Form~submitted.')~.'

'); @@ -940,7 +942,7 @@ sub~handler~\{ ~~~~my~\%newHash~=~(); -~~~~foreach~(keys~\%ENV)~\{ +~~~~foreach~(keys~\%env)~\{ ~~~~~~~~if~(substr(\$\_,~0,~10)~eq~'form.symb.')~\{ @@ -974,7 +976,7 @@ sub~handler~\{ ~~~~~~~~~~~~~~\char`\"{}name='submission'~value='1'~/>\char`\"{}); -~~~~\$ENV\{'form.condition'\}~=~1; +~~~~\$env\{'form.condition'\}~=~1; ~~~~my~\$renderArgs~=~\{~'cols'~=>~{[}Apache::lonnavmaps::resource,