Annotation of doc/gutshtml/SessionTw1.html, revision 1.1

1.1     ! www         1: <html>
<head>
<meta name=Title content="Session Two: Spreadsheet and Messaging (Matthew)">
<meta http-equiv=Content-Type content="text/html; charset=macintosh">
<link rel=Edit-Time-Data href="Session%20Tw1_files/editdata.mso">
<title>Session Two: Spreadsheet and Messaging (Matthew)</title>
<style><!--
.MsoHeading7
	{font-size:16.0pt;
	font-family:"Times New Roman";
	color:black;}
.MsoHeader
	{tab-stops:center 3.0in right 6.0in;
	font-size:10.0pt;
	font-family:"Times New Roman";}
.MsoBodyText
	{line-height:24.0pt;
	font-size:12.0pt;
	font-family:"Times New Roman";
	layout-grid-mode:line;}
.MsoBodyText2
	{font-size:10.0pt;
	font-family:"Times New Roman";
	color:black;}
.Section1
	{page:Section1;}
.Section2
	{page:Section2;}
-->
</style>
</head>
<body bgcolor=#FFFFFF link=blue vlink=purple class="Normal" lang=EN-US>
<div class=Section1> 
  <h2>Session Two: Spreadsheet and Messaging (Matthew)</h2>
  <h3><a name="_Toc421867092">Spreadsheets</a></h3>
  <p class=MsoBodyText2>The spreadsheet presents data on student performance on 
    homework problems. Spreadsheets are handled by loncom/interface/lonspreadsheet.pm 
    and are completely web based. A person who has selected a student role will 
    access the spreadsheets using the [GRDS] button. A course coordinator is given 
    access via the [SPRS] button. Students are not able to see data on anyone's 
    performance but their own. Students are also not allowed to save spreadsheets. 
  </p>
  <h3><a name="_Toc421867093">Spreadsheet Structure and Hierarchy</a></h3>
  <p><span style='color:black'>The spreadsheets are laid out in the typical fashion, 
    with some limitations. There can only be 52 columns, addressed [A-Za-z]. There 
    may be any number of rows, but currently there do not exist facilities to 
    add rows other than those automatically generated. </span></p>
  <p><span style='color:black'>There are three levels of spreadsheets, as illustrated 
    in <b>Fig. 2.2.1</b></span><span style='color:
black'>.</span><span style='font-size:16.0pt;color:black'> <img width=432 height=278
src="Session%20Tw1_files/image003.png" v:shapes="_x0000_i1025"> </span></p>
  <p class=MsoHeading7><b>Fig. 2.1.1</b><span style='font-weight:normal'> Ð Spreadsheet 
    Hierarchy </span></p>
  <p><span style='color:black'>The rightmost spreadsheets are the assessment spreadsheets. 
    The middle spreadsheets are the student spreadsheets. The left spreadsheet 
    is the course spreadsheet. </span></p>
  <h3><a name="_Toc421867094">Export Rows</a></h3>
  <p><span style='color:black'>The hierarchy of spreadsheets described above allows 
    data from the lower level spreadsheets (assessment and student) to be exported 
    up to the higher level spreadsheets (student and course, respectively). Row 
    0 is the export row. Only the cells A0-Z0 are exported. Cells a0-z0 are not 
    exported and can be used as 'scratch' space for the results exported in A0-Z0. 
    </span></p>
  <p><span style='color:black'>The export rows in the image are shown shaded in 
    figure 2.2.1. Where the exported rows appear in the student and course spreadsheets 
    is indicated by arrows. </span></p>
  <h3><a name="_Toc421867095">Assessment Spreadsheet</a></h3>
  <p><span style='color:black'>The assessment spreadsheet gives data on the students 
    performance on a specific resource in LON-CAPA (typically a *.problem resource). 
    Parameters such as the due date, the number of tries possible, the number 
    of attempts made, the correctness of the student solution, and any &lt;parameter&gt; 
    tags inserted in the resource will be shown. <b>Fig. 2.2.2</b></span><span style='color:black'> 
    shows an example of an assessment spreadsheet.</span></p>
  <p> <img width=432 height=290
src="Session%20Tw1_files/image005.jpg" v:shapes="_x0000_i1026"> </p>
  <p><span style='font-size:14.0pt'><b>Fig. 2.2.2</b></span><span
style='font-size:14.0pt'> Ð Example Spreadsheet on Assessment Level</span></p>
  <h3><a name="_Toc421867096">Student Spreadsheet</a></h3>
  <p class=MsoBodyText2>Each assessment spreadsheet exports a row into the student 
    spreadsheet. Fig 2.2.3 shows an example student spreadsheet. The student spreadsheet 
    exports a row to the course spreadsheet. </p>
  <p class=MsoHeader><b>Fig. 2.2.3</b><span
style='font-weight:normal'> shows the next level up spreadsheet with the exported 
    data from this sheet.</span></p>
  <p class=MsoHeader> <img width=431 height=240
src="Session%20Tw1_files/image007.jpg" v:shapes="_x0000_i1027"> </p>
  <p class=MsoHeader><span style='font-size:14.0pt'><b>Fig. 2.2.3</b></span><span style='font-size:14.0pt'> 
    Ð Default Spreadsheet on Student Level</span></p>
  <h3><a name="_Toc421867097">Course Spreadsheet</a></h3>
  <p>The course spreadsheet gives a summary of each students performance in the 
    course as a whole. <b>Fig 2.2.4</b><span style='font-weight:
normal'> shows the default course spreadsheet. </span></p>
  <p class=MsoHeader> <img width=432 height=143
src="Session%20Tw1_files/image009.jpg" v:shapes="_x0000_i1028"> </p>
  <p class=MsoHeader><span style='font-size:14.0pt'><b>Fig. 2.2.4</b></span><span style='font-size:14.0pt'> 
    Ð Default Spreadsheet on Course Level</span></p>
  <h3><a name="_Toc421867098">Spreadsheet definition</a></h3>
  <p class=MsoBodyText2>The default spreadsheets are defined via xml. <b>Fig. 
    2.2.5</b><span style='font-weight:normal'> shows a sample definition of a 
    spreadsheet. However, it is possible to work with spreadsheets and never edit 
    the xml for the spreadsheet itself. By modifying the contents of cells via 
    the web interface and saving the results, instructors can create as complicated 
    a spreadsheet as they like. It is now possible for users to upload spreadsheets 
    to the library server, publish them, and set them as the default sheets for 
    their course. </span></p>
  <div style='border:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt'> 
    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
8.0pt;font-family:"Courier New"'>[www@zaphod www]$ cat /home/httpd/html/res/adm/includes/default.assesscalc</span></p>
    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
8.0pt;font-family:"Courier New"'>&lt;field col=A row=0&gt;[stores_0_solved]&lt;/field&gt;</span></p>
    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
8.0pt;font-family:"Courier New"'>&lt;field col=B row=0&gt;'Tries:'&lt;/field&gt;</span></p>
    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
8.0pt;font-family:"Courier New"'>&lt;field col=C row=0&gt;[stores_0_tries]&lt;/field&gt;</span></p>
    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
8.0pt;font-family:"Courier New"'>&lt;field col=D row=0&gt;'Timestamp:'&lt;/field&gt;</span></p>
    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
8.0pt;font-family:"Courier New"'>&lt;field col=E row=0&gt;[timestamp]&lt;/field&gt;</span></p>
    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
8.0pt;font-family:"Courier New"'>&lt;field col=F row=0&gt;'Duedate:'&lt;/field&gt;</span></p>
    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
8.0pt;font-family:"Courier New"'>&lt;field col=G row=0&gt;[parameter_0_duedate]&lt;/field&gt;</span></p>
    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
8.0pt;font-family:"Courier New"'>&lt;field col=W row=0&gt;'Available Points:'&lt;/field&gt;</span></p>
    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
8.0pt;font-family:"Courier New"'>&lt;field col=X row=0&gt;[parameter_0_weight]&lt;/field&gt;</span></p>
    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
8.0pt;font-family:"Courier New"'>&lt;field col=Y row=0&gt;'Awarded Points:'&lt;/field&gt;</span></p>
    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
8.0pt;font-family:"Courier New"'>&lt;field col=Z row=0&gt;[parameter_0_weight]*[stores_0_awarded]&lt;/field&gt;</span></p>
  </div>
  <p class=MsoHeader><span style='font-size:14.0pt'><b>Fig. 2.2.5</b></span><span style='font-size:14.0pt'> 
    Ð Default Spreadsheet on Assessment Level</span></p>
  <h3><a name="_Toc421867099">Template Row</a></h3>
  <p class=MsoBodyText2>The template row of a spreadsheets will make the contents 
    of a given column identical for each row. The contents of the template row 
    are shown verbatim, and not evaluated. Fig 2.2.6 shows the template row in 
    use. </p>
  <p class=MsoHeader> <img width=432 height=215
src="Session%20Tw1_files/image011.jpg" v:shapes="_x0000_i1029"> </p>
  <p class=MsoHeader><span style='font-size:14.0pt'><b>Fig. 2.2.7</b></span><span style='font-size:14.0pt'> 
    Ð Customized Spreadsheet on Student Level</span><b> </b><span style='font-size:8.0pt;font-weight:normal'>Shows 
    a course-customized student-level spreadsheet with many of these functions, 
    templates and wildcards in action. In the dialog window, </span><span
style='font-size:8.0pt;font-family:"Courier New"'>&amp;SUM(Òd*Ó)</span><span
style='font-size:8.0pt'> is entered as the expression for cell H0, which will 
    add up all cells in column d. The template row is used to define expressions 
    for columns a, b, c, and d, where for b and d both the Ô#Õ wildcard and access 
    to the EXT function is used in order to multiply the respective X and Z cells 
    in each row with 1 or 0 depending on whether the value in G (the duedate) 
    is smaller or larger than the system time (Ò?Ó is the standard Perl choice 
    operator).</span></p>
  <h3><a name="_Toc421867100">What goes in a cell</a></h3>
  <p class=MsoBodyText2>A cell contains either parameter data (which cannot be 
    changed) or perl code. Additionally, cells can contain references to other 
    cells and these references can be passed as parameters to perl functions. 
    Parameters can be accessed via the cell they are stored in or by the parameter 
    name. </p>
  <h3><a name="_Toc421867101">Parameter Access</a></h3>
  <p class=MsoBodyText2>Parameters can be accessed by enclosing the parameter 
    name in square brackets. A new feature allows the accessing of parameters 
    by enclosing only enough information to lead to a unique parameter. &quot;[part_0_duedate]&quot; 
    will give the same value as &quot;[duedate]&quot; if there are no other parameters 
    which contain the string &quot;duedate&quot;. </p>
  <h3><a name="_Toc421867102">Addressing other cells</a></h3>
  <p><span style='color:black'>Cells are specified by the letter-number combination 
    of their position in the table, for example &quot;A5&quot;. There are also 
    wildcards '*' and '#' which are used in ranges and templates, respectively, 
    and symbolic names. </span></p>
  <p><span style='color:black'>Valid ranges are for example &quot;A5..C7&quot; 
    which is the square between cells A5 to C7, as in A5, A6, A7, B5, etc. Also, 
    wildcards can be used, as in &quot;A*&quot; for column A, or &quot;*5&quot; 
    for row 5. For example, &amp;SUM(&quot;d*&quot;) will add up all cells in 
    column d. The table below gives a brief summary of the range options. </span></p>
  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    all rows, all columns</span></p>
  <p><span style='color:black'>B*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; all rows 
    in column B</span></p>
  <p><span style='color:black'>*5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; all 
    columns in row 5</span></p>
  <p><span style='color:black'>C5..F25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    all cells in the rectangle between C5 and F25</span></p>
  <p>The template row allows the use of &quot;A#&quot;, which will result in &quot;A5&quot; 
    in row 5, &quot;A6&quot; in row 6, etc.<span
style='font-size:16.0pt'> </span></p>
  <p><b>Spreadsheet Functions </b></p>
  <p class=MsoHeader><span style='color:black'>Many perl functions are available 
    in the spreadsheet (see &quot;The Safe Environment&quot; below). Additionally, 
    some spreadsheet specific functions have been defined as well. A complete 
    list is available by executing 'perldoc loncapa/loncom/interface/lonspreadsheet.pm' 
    on the command line. An abbreviated table appears in Fig. 2.2.7.</span></p>
  <div style='border:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt'> 
    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
11.0pt'>&amp;NUM(<i>range</i></span><span style='font-size:11.0pt'>) Ð number 
      of non-empty cells in <i>range</i></span></p>
    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
11.0pt'>&amp;BIN(<i>low, high, range</i></span><span style='font-size:11.0pt'>) 
      Ð number of non-empty cells in <i>range</i></span><span style='font-size:11.0pt'> 
      with values between <i>low</i></span><span style='font-size:11.0pt'> and 
      <i>high</i></span></p>
    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
11.0pt'>&amp;SUM(<i>range</i></span><span style='font-size:11.0pt'>) Ð sum of 
      the non-empty cells in <i>range</i></span></p>
    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
11.0pt'>&amp;MEAN(<i>range</i></span><span style='font-size:11.0pt'>) Ð mean value 
      of non-empty cells in <i>range</i></span></p>
    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
11.0pt'>&amp;STDDEV(<i>range</i></span><span style='font-size:11.0pt'>) Ð standard 
      deviation of non-empty cells in <i>range</i></span></p>
    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
11.0pt'>&amp;PROD(<i>range</i></span><span style='font-size:11.0pt'>) Ð product 
      of non-empty cells in <i>range</i></span></p>
    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
11.0pt'>&amp;MAX(<i>range</i></span><span style='font-size:11.0pt'>) Ð maximum 
      value of non-empty cell in <i>range</i></span></p>
    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
11.0pt'>&amp;MIN(<i>range</i></span><span style='font-size:11.0pt'>) Ð minimum 
      value of non-empty cells in <i>range</i></span></p>
    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
11.0pt'>&amp;SUMMAX(<i>n ,range</i></span><span style='font-size:11.0pt'>) Ð sum 
      of the maximum <i>n</i></span><span style='font-size:11.0pt'> non-empty 
      cells in range</span></p>
    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
11.0pt'>&amp;SUMMIN(<i>n, range</i></span><span style='font-size:11.0pt'>) Ð sum 
      of the minimum <i>n</i></span><span style='font-size:11.0pt'> non-empty 
      cells in range</span></p>
    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
11.0pt'>&amp;EXT(<i>expression</i></span><span style='font-size:11.0pt'>) Ð access 
      to EXT function in </span><span style='font-size:11.0pt;font-family:
"Courier New"'>lonnet</span></p>
  </div>
  <p class=MsoHeader><span style='font-size:14.0pt'><b>Fig. 2.2.7</b></span><span style='font-size:14.0pt'> 
    Ð Available Functions in Spreadsheet</span></p>
  <h3><a name="_Toc421867103">The Safe Environment</a></h3>
  <p><span style='color:black'>The spreadsheet cells are evaluated in a &quot;Safe&quot; 
    environment. The module Safe.pm is included in the standard systemperl RPM 
    put out by the LON-CAPA developers, but is written by Tim Bunce and Malcolm 
    Beattie. If you execute 'perldoc Safe' you can read the documentation for 
    the module. </span></p>
  <p><span style='color:black'>The Safe.pm module allows users to &quot;compile 
    and execute code in restricted compartments&quot;. We use this to allow users 
    to implement in their spreadsheets a restricted set of perl functions, variables, 
    and operators. No one using the spreadsheet should ever need access to the 
    basic IO functions of Perl, for example, so these are not made available to 
    the users. </span></p>
  <p><span style='color:black'>Each cell is evaluated within the same safe space, 
    so cells can actually contain function and declarations. </span></p>
  <p><span style='color:black'>There is information the user may need which is 
    not contained in the cells of the spreadsheet. So we poke a hole in the safe 
    space using the Safe::Hole module. This lets us allow access to external information. 
    Obviously this needs to be done with some degree of caution. </span></p>
  <p><span style='color:black'>At the beginning of lonspreadsheet.pm we have the 
    following code: </span></p>
  <p><span style='font-family:"Courier New";color:black'>use Safe;</span></p>
  <p><span style='font-family:"Courier New";color:black'>use Safe::Hole;</span></p>
  <p><span style='color:black'>The function &amp;initsheet, which is called when 
    a spreadsheet is created or modified, defines the safe space for the execution 
    of spreadsheet code: </span></p>
  <p><span style='font-family:"Courier New";color:black'>sub initsheet {</span></p>
  <p><span style='font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; my 
    $safeeval = new Safe(shift);</span></p>
  <p><span style='font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; my 
    $safehole = new Safe::Hole;</span></p>
  <p><span style='font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; $safeeval-&gt;permit(&quot;entereval&quot;);</span></p>
  <p><span style='font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; $safeeval-&gt;permit(&quot;:base_math&quot;);</span></p>
  <p><span style='font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; $safeeval-&gt;permit(&quot;sort&quot;);</span></p>
  <p><span style='font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; $safeeval-&gt;deny(&quot;:base_io&quot;);</span></p>
  <p><span style='font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; $safehole-&gt;wrap(\&amp;Apache::lonnet::EXT,$safeeval,'&amp;EXT');</span></p>
  <p><span style='font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; my 
    $code=&lt;&lt;'ENDDEFS';</span></p>
  <p><span style='font-family:"Courier New";color:black'>.</span></p>
  <p><span style='font-family:"Courier New";color:black'><i>functions and variables 
    needed in the safe space are defined here</i></span></p>
  <p><span style='font-family:"Courier New";color:black'>.</span></p>
  <p><span style='font-family:"Courier New";color:black'>ENDDEFS</span></p>
  <p><span style='font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; $safeeval-&gt;reval($code);</span></p>
  <p><span style='font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; return 
    $safeeval;</span></p>
  <p><span style='font-family:"Courier New";color:black'>}</span></p>
  <h3><a name="_Toc421867104">Change is coming</a></h3>
  <p><span style='color:black'>Currently the spreadsheet is scheduled to undergo 
    major revisions by the end of the summer. The goal of these revisions is to 
    increase the speed and add some requested functionality. We hope to add: </span></p>
  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    Improved exporting of the spreadsheet date to client side spreadsheets </span></p>
  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    Exporting of spreadsheet xml - allowing users to save spreadsheets from their 
    classes for reuse. </span></p>
  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    Additional spreadsheet functions.</span></p>
  <h3>&nbsp; </h3>
  <h3><a name="_Toc421867105">Discussion</a></h3>
  <p><span style='color:black'>loncapa/loncom/interface/lonfeedback.pm handles 
    feedback on resources. Feedback can be for course discussion of a resource 
    or to communicate with the author of the resource. In the latter case, a screenshot 
    of the resource and (if applicable) the students previous attempts to solve 
    the problem. </span></p>
  <p><span style='color:black'>Course discussion messages appear at the bottom 
    of the resource being discussed. There are two types of attribution in course 
    discussion messages. Users may choose to have their LON-CAPA id shown to everyone 
    or they may have it shown only to instructors. Complete anonymity is not an 
    option. If the users choose to hide their LON-CAPA id (an 'anonymous' message), 
    they can set the name given in the [PREF] page. </span></p>
  <p><span style='color:black'><b>Figures 2.2.8</b></span><span
style='color:black'> through <b>2.2.10</b></span><span style='color:black'> show 
    a course discussion feedback cycle. </span></p>
  <p><span style='color:black'> <img width=256 height=63
src="Session%20Tw1_files/image013.jpg" v:shapes="_x0000_i1030"> </span></p>
  <p><span style='color:black'><b>Fig 2.2.8</b></span><span
style='color:black'> - A Simple Resource</span></p>
  <p><span style='color:black'> <img width=301 height=240
src="Session%20Tw1_files/image015.jpg" v:shapes="_x0000_i1031"> </span></p>
  <p><span style='color:black'><b>Fig. 2.2.9</b></span><span
style='color:black'> Composing Discussion Feedback&nbsp; </span></p>
  <p><span style='color:black'> <img width=292 height=170
src="Session%20Tw1_files/image017.jpg" v:shapes="_x0000_i1032"> </span></p>
  <p><span style='color:black'><b>Fig 2.2.10</b></span><span
style='color:black'> The Resource with Anonymous and Non-anonymous Discussion</span></p>
  <h3><a name="_Toc421867106">Messaging</a></h3>
</div>
<h1><span style='font-size:10.0pt;font-family:"Courier New";font-weight:normal'>&nbsp;</span></h1>
<p><span style='color:black'>loncapa/loncom/interface/lonmsg.pm provides functions 
  for sending users messages. All messaging is currently done via lonmsg.pm. The 
  following subroutines handle the sending of various types of messages: </span></p>
<p><span style='font-family:"Courier New";color:black'>author_res_msg </span></p>
<p><span style='color:black'>Send a message to the author of a resource. </span></p>
<p><span style='font-family:"Courier New";color:black'>user_crit_msg </span></p>
<p><span style='color:black'>Send a critical message to a user. Critical messages 
  require the user to acknowledge receipt before any other action in LON-CAPA 
  can be taken. </span></p>
<p><span style='font-family:"Courier New";color:black'>user_crit_received </span></p>
<p><span style='color:black'>Notify the sender of a critical message that the 
  message has been received. </span></p>
<p><span style='font-family:"Courier New";color:black'>user_normal_msg </span></p>
<p><span style='color:black'>Send a non-critical message to a user. </span></p>
<p><span style='font-family:"Courier New";color:black'>statuschange </span></p>
<p><span style='color:black'>Change the status of a message (read, replied, forwarded, 
  etc) </span></p>
<p><span style='color:black'>The lonmsg::handler takes care of the display and 
  sending of messages. If you have the time, communicate with yourself! Note: 
  Critical messages are displayed on login to LON-CAPA. Some message types are 
  only available for course coordinators. </span></p>
<h3><span style='color:black'>&nbsp;</span></h3>
<h3><a name="_Toc421867107">Resource Feedback</a></h3>
<p><img border=0 width=432 height=304 id="_x0000_i1028"
src="handout_files/image004.jpg"></p>
<p class=MsoHeader><span style='font-size:14.0pt'><b>Fig. 2.2.11</b></span><span style='font-size:14.0pt'> 
  Ð Example of a Feedback</span></p>
<br
clear=ALL style='page-break-before:always;'>
<div class=Section2> </div>
</body>
</html>

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>