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

1.2     ! bowersj2    1: <html>
        !             2: <head>
        !             3: <meta name=Title content="Session Two: Spreadsheet and Messaging (Matthew)">
        !             4: <meta http-equiv=Content-Type content="text/html; charset=macintosh">
        !             5: <link rel=Edit-Time-Data href="Session%20Tw1_files/editdata.mso">
        !             6: <title>Session Two: Spreadsheet and Messaging (Matthew)</title>
        !             7: <style><!--
        !             8: .MsoHeading7
        !             9: 	{font-size:16.0pt;
        !            10: 	font-family:"Times New Roman";
        !            11: 	color:black;}
        !            12: .MsoHeader
        !            13: 	{tab-stops:center 3.0in right 6.0in;
        !            14: 	font-size:10.0pt;
        !            15: 	font-family:"Times New Roman";}
        !            16: .MsoBodyText
        !            17: 	{line-height:24.0pt;
        !            18: 	font-size:12.0pt;
        !            19: 	font-family:"Times New Roman";
        !            20: 	layout-grid-mode:line;}
        !            21: .MsoBodyText2
        !            22: 	{font-size:10.0pt;
        !            23: 	font-family:"Times New Roman";
        !            24: 	color:black;}
        !            25: .Section1
        !            26: 	{page:Section1;}
        !            27: .Section2
        !            28: 	{page:Section2;}
        !            29: -->
        !            30: </style>
        !            31: </head>
        !            32: <body bgcolor=#FFFFFF link=blue vlink=purple class="Normal" lang=EN-US>
        !            33: <div class=Section1> 
        !            34:   <h2>Session Two: Spreadsheet and Messaging (Matthew)</h2>
        !            35:   <h3><a name="_Toc421867092">Spreadsheets</a></h3>
        !            36:   <p class=MsoBodyText2>The spreadsheet presents data on student performance on 
        !            37:     homework problems. Spreadsheets are handled by loncom/interface/lonspreadsheet.pm 
        !            38:     and are completely web based. A person who has selected a student role will 
        !            39:     access the spreadsheets using the [GRDS] button. A course coordinator is given 
        !            40:     access via the [SPRS] button. Students are not able to see data on anyone's 
        !            41:     performance but their own. Students are also not allowed to save spreadsheets. 
        !            42:   </p>
        !            43:   <h3><a name="_Toc421867093">Spreadsheet Structure and Hierarchy</a></h3>
        !            44:   <p><span style='color:black'>The spreadsheets are laid out in the typical fashion, 
        !            45:     with some limitations. There can only be 52 columns, addressed [A-Za-z]. There 
        !            46:     may be any number of rows, but currently there do not exist facilities to 
        !            47:     add rows other than those automatically generated. </span></p>
        !            48:   <p><span style='color:black'>There are three levels of spreadsheets, as illustrated 
        !            49:     in <b>Fig. 2.2.1</b></span><span style='color:
        !            50: black'>.</span><span style='font-size:16.0pt;color:black'> <img width=432 height=278
        !            51: src="Session%20Tw1_files/image003.png" v:shapes="_x0000_i1025"> </span></p>
        !            52:   <p class=MsoHeading7><b>Fig. 2.1.1</b><span style='font-weight:normal'> Ð Spreadsheet 
        !            53:     Hierarchy </span></p>
        !            54:   <p><span style='color:black'>The rightmost spreadsheets are the assessment spreadsheets. 
        !            55:     The middle spreadsheets are the student spreadsheets. The left spreadsheet 
        !            56:     is the course spreadsheet. </span></p>
        !            57:   <h3><a name="_Toc421867094">Export Rows</a></h3>
        !            58:   <p><span style='color:black'>The hierarchy of spreadsheets described above allows 
        !            59:     data from the lower level spreadsheets (assessment and student) to be exported 
        !            60:     up to the higher level spreadsheets (student and course, respectively). Row 
        !            61:     0 is the export row. Only the cells A0-Z0 are exported. Cells a0-z0 are not 
        !            62:     exported and can be used as 'scratch' space for the results exported in A0-Z0. 
        !            63:     </span></p>
        !            64:   <p><span style='color:black'>The export rows in the image are shown shaded in 
        !            65:     figure 2.2.1. Where the exported rows appear in the student and course spreadsheets 
        !            66:     is indicated by arrows. </span></p>
        !            67:   <h3><a name="_Toc421867095">Assessment Spreadsheet</a></h3>
        !            68:   <p><span style='color:black'>The assessment spreadsheet gives data on the students 
        !            69:     performance on a specific resource in LON-CAPA (typically a *.problem resource). 
        !            70:     Parameters such as the due date, the number of tries possible, the number 
        !            71:     of attempts made, the correctness of the student solution, and any &lt;parameter&gt; 
        !            72:     tags inserted in the resource will be shown. <b>Fig. 2.2.2</b></span><span style='color:black'> 
        !            73:     shows an example of an assessment spreadsheet.</span></p>
        !            74:   <p> <img width=432 height=290
        !            75: src="Session%20Tw1_files/image005.jpg" v:shapes="_x0000_i1026"> </p>
        !            76:   <p><span style='font-size:14.0pt'><b>Fig. 2.2.2</b></span><span
        !            77: style='font-size:14.0pt'> Ð Example Spreadsheet on Assessment Level</span></p>
        !            78:   <h3><a name="_Toc421867096">Student Spreadsheet</a></h3>
        !            79:   <p class=MsoBodyText2>Each assessment spreadsheet exports a row into the student 
        !            80:     spreadsheet. Fig 2.2.3 shows an example student spreadsheet. The student spreadsheet 
        !            81:     exports a row to the course spreadsheet. </p>
        !            82:   <p class=MsoHeader><b>Fig. 2.2.3</b><span
        !            83: style='font-weight:normal'> shows the next level up spreadsheet with the exported 
        !            84:     data from this sheet.</span></p>
        !            85:   <p class=MsoHeader> <img width=431 height=240
        !            86: src="Session%20Tw1_files/image007.jpg" v:shapes="_x0000_i1027"> </p>
        !            87:   <p class=MsoHeader><span style='font-size:14.0pt'><b>Fig. 2.2.3</b></span><span style='font-size:14.0pt'> 
        !            88:     Ð Default Spreadsheet on Student Level</span></p>
        !            89:   <h3><a name="_Toc421867097">Course Spreadsheet</a></h3>
        !            90:   <p>The course spreadsheet gives a summary of each students performance in the 
        !            91:     course as a whole. <b>Fig 2.2.4</b><span style='font-weight:
        !            92: normal'> shows the default course spreadsheet. </span></p>
        !            93:   <p class=MsoHeader> <img width=432 height=143
        !            94: src="Session%20Tw1_files/image009.jpg" v:shapes="_x0000_i1028"> </p>
        !            95:   <p class=MsoHeader><span style='font-size:14.0pt'><b>Fig. 2.2.4</b></span><span style='font-size:14.0pt'> 
        !            96:     Ð Default Spreadsheet on Course Level</span></p>
        !            97:   <h3><a name="_Toc421867098">Spreadsheet definition</a></h3>
        !            98:   <p class=MsoBodyText2>The default spreadsheets are defined via xml. <b>Fig. 
        !            99:     2.2.5</b><span style='font-weight:normal'> shows a sample definition of a 
        !           100:     spreadsheet. However, it is possible to work with spreadsheets and never edit 
        !           101:     the xml for the spreadsheet itself. By modifying the contents of cells via 
        !           102:     the web interface and saving the results, instructors can create as complicated 
        !           103:     a spreadsheet as they like. It is now possible for users to upload spreadsheets 
        !           104:     to the library server, publish them, and set them as the default sheets for 
        !           105:     their course. </span></p>
        !           106:   <div style='border:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt'> 
        !           107:     <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
        !           108: 8.0pt;font-family:"Courier New"'>[www@zaphod www]$ cat /home/httpd/html/res/adm/includes/default.assesscalc</span></p>
        !           109:     <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
        !           110: 8.0pt;font-family:"Courier New"'>&lt;field col=A row=0&gt;[stores_0_solved]&lt;/field&gt;</span></p>
        !           111:     <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
        !           112: 8.0pt;font-family:"Courier New"'>&lt;field col=B row=0&gt;'Tries:'&lt;/field&gt;</span></p>
        !           113:     <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
        !           114: 8.0pt;font-family:"Courier New"'>&lt;field col=C row=0&gt;[stores_0_tries]&lt;/field&gt;</span></p>
        !           115:     <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
        !           116: 8.0pt;font-family:"Courier New"'>&lt;field col=D row=0&gt;'Timestamp:'&lt;/field&gt;</span></p>
        !           117:     <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
        !           118: 8.0pt;font-family:"Courier New"'>&lt;field col=E row=0&gt;[timestamp]&lt;/field&gt;</span></p>
        !           119:     <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
        !           120: 8.0pt;font-family:"Courier New"'>&lt;field col=F row=0&gt;'Duedate:'&lt;/field&gt;</span></p>
        !           121:     <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
        !           122: 8.0pt;font-family:"Courier New"'>&lt;field col=G row=0&gt;[parameter_0_duedate]&lt;/field&gt;</span></p>
        !           123:     <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
        !           124: 8.0pt;font-family:"Courier New"'>&lt;field col=W row=0&gt;'Available Points:'&lt;/field&gt;</span></p>
        !           125:     <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
        !           126: 8.0pt;font-family:"Courier New"'>&lt;field col=X row=0&gt;[parameter_0_weight]&lt;/field&gt;</span></p>
        !           127:     <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
        !           128: 8.0pt;font-family:"Courier New"'>&lt;field col=Y row=0&gt;'Awarded Points:'&lt;/field&gt;</span></p>
        !           129:     <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
        !           130: 8.0pt;font-family:"Courier New"'>&lt;field col=Z row=0&gt;[parameter_0_weight]*[stores_0_awarded]&lt;/field&gt;</span></p>
        !           131:   </div>
        !           132:   <p class=MsoHeader><span style='font-size:14.0pt'><b>Fig. 2.2.5</b></span><span style='font-size:14.0pt'> 
        !           133:     Ð Default Spreadsheet on Assessment Level</span></p>
        !           134:   <h3><a name="_Toc421867099">Template Row</a></h3>
        !           135:   <p class=MsoBodyText2>The template row of a spreadsheets will make the contents 
        !           136:     of a given column identical for each row. The contents of the template row 
        !           137:     are shown verbatim, and not evaluated. Fig 2.2.6 shows the template row in 
        !           138:     use. </p>
        !           139:   <p class=MsoHeader> <img width=432 height=215
        !           140: src="Session%20Tw1_files/image011.jpg" v:shapes="_x0000_i1029"> </p>
        !           141:   <p class=MsoHeader><span style='font-size:14.0pt'><b>Fig. 2.2.7</b></span><span style='font-size:14.0pt'> 
        !           142:     Ð Customized Spreadsheet on Student Level</span><b> </b><span style='font-size:8.0pt;font-weight:normal'>Shows 
        !           143:     a course-customized student-level spreadsheet with many of these functions, 
        !           144:     templates and wildcards in action. In the dialog window, </span><span
        !           145: style='font-size:8.0pt;font-family:"Courier New"'>&amp;SUM(Òd*Ó)</span><span
        !           146: style='font-size:8.0pt'> is entered as the expression for cell H0, which will 
        !           147:     add up all cells in column d. The template row is used to define expressions 
        !           148:     for columns a, b, c, and d, where for b and d both the Ô#Õ wildcard and access 
        !           149:     to the EXT function is used in order to multiply the respective X and Z cells 
        !           150:     in each row with 1 or 0 depending on whether the value in G (the duedate) 
        !           151:     is smaller or larger than the system time (Ò?Ó is the standard Perl choice 
        !           152:     operator).</span></p>
        !           153:   <h3><a name="_Toc421867100">What goes in a cell</a></h3>
        !           154:   <p class=MsoBodyText2>A cell contains either parameter data (which cannot be 
        !           155:     changed) or perl code. Additionally, cells can contain references to other 
        !           156:     cells and these references can be passed as parameters to perl functions. 
        !           157:     Parameters can be accessed via the cell they are stored in or by the parameter 
        !           158:     name. </p>
        !           159:   <h3><a name="_Toc421867101">Parameter Access</a></h3>
        !           160:   <p class=MsoBodyText2>Parameters can be accessed by enclosing the parameter 
        !           161:     name in square brackets. A new feature allows the accessing of parameters 
        !           162:     by enclosing only enough information to lead to a unique parameter. &quot;[part_0_duedate]&quot; 
        !           163:     will give the same value as &quot;[duedate]&quot; if there are no other parameters 
        !           164:     which contain the string &quot;duedate&quot;. </p>
        !           165:   <h3><a name="_Toc421867102">Addressing other cells</a></h3>
        !           166:   <p><span style='color:black'>Cells are specified by the letter-number combination 
        !           167:     of their position in the table, for example &quot;A5&quot;. There are also 
        !           168:     wildcards '*' and '#' which are used in ranges and templates, respectively, 
        !           169:     and symbolic names. </span></p>
        !           170:   <p><span style='color:black'>Valid ranges are for example &quot;A5..C7&quot; 
        !           171:     which is the square between cells A5 to C7, as in A5, A6, A7, B5, etc. Also, 
        !           172:     wildcards can be used, as in &quot;A*&quot; for column A, or &quot;*5&quot; 
        !           173:     for row 5. For example, &amp;SUM(&quot;d*&quot;) will add up all cells in 
        !           174:     column d. The table below gives a brief summary of the range options. </span></p>
        !           175:   <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        !           176:     all rows, all columns</span></p>
        !           177:   <p><span style='color:black'>B*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; all rows 
        !           178:     in column B</span></p>
        !           179:   <p><span style='color:black'>*5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; all 
        !           180:     columns in row 5</span></p>
        !           181:   <p><span style='color:black'>C5..F25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        !           182:     all cells in the rectangle between C5 and F25</span></p>
        !           183:   <p>The template row allows the use of &quot;A#&quot;, which will result in &quot;A5&quot; 
        !           184:     in row 5, &quot;A6&quot; in row 6, etc.<span
        !           185: style='font-size:16.0pt'> </span></p>
        !           186:   <p><b>Spreadsheet Functions </b></p>
        !           187:   <p class=MsoHeader><span style='color:black'>Many perl functions are available 
        !           188:     in the spreadsheet (see &quot;The Safe Environment&quot; below). Additionally, 
        !           189:     some spreadsheet specific functions have been defined as well. A complete 
        !           190:     list is available by executing 'perldoc loncapa/loncom/interface/lonspreadsheet.pm' 
        !           191:     on the command line. An abbreviated table appears in Fig. 2.2.7.</span></p>
        !           192:   <div style='border:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt'> 
        !           193:     <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
        !           194: 11.0pt'>&amp;NUM(<i>range</i></span><span style='font-size:11.0pt'>) Ð number 
        !           195:       of non-empty cells in <i>range</i></span></p>
        !           196:     <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
        !           197: 11.0pt'>&amp;BIN(<i>low, high, range</i></span><span style='font-size:11.0pt'>) 
        !           198:       Ð number of non-empty cells in <i>range</i></span><span style='font-size:11.0pt'> 
        !           199:       with values between <i>low</i></span><span style='font-size:11.0pt'> and 
        !           200:       <i>high</i></span></p>
        !           201:     <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
        !           202: 11.0pt'>&amp;SUM(<i>range</i></span><span style='font-size:11.0pt'>) Ð sum of 
        !           203:       the non-empty cells in <i>range</i></span></p>
        !           204:     <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
        !           205: 11.0pt'>&amp;MEAN(<i>range</i></span><span style='font-size:11.0pt'>) Ð mean value 
        !           206:       of non-empty cells in <i>range</i></span></p>
        !           207:     <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
        !           208: 11.0pt'>&amp;STDDEV(<i>range</i></span><span style='font-size:11.0pt'>) Ð standard 
        !           209:       deviation of non-empty cells in <i>range</i></span></p>
        !           210:     <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
        !           211: 11.0pt'>&amp;PROD(<i>range</i></span><span style='font-size:11.0pt'>) Ð product 
        !           212:       of non-empty cells in <i>range</i></span></p>
        !           213:     <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
        !           214: 11.0pt'>&amp;MAX(<i>range</i></span><span style='font-size:11.0pt'>) Ð maximum 
        !           215:       value of non-empty cell in <i>range</i></span></p>
        !           216:     <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
        !           217: 11.0pt'>&amp;MIN(<i>range</i></span><span style='font-size:11.0pt'>) Ð minimum 
        !           218:       value of non-empty cells in <i>range</i></span></p>
        !           219:     <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
        !           220: 11.0pt'>&amp;SUMMAX(<i>n ,range</i></span><span style='font-size:11.0pt'>) Ð sum 
        !           221:       of the maximum <i>n</i></span><span style='font-size:11.0pt'> non-empty 
        !           222:       cells in range</span></p>
        !           223:     <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
        !           224: 11.0pt'>&amp;SUMMIN(<i>n, range</i></span><span style='font-size:11.0pt'>) Ð sum 
        !           225:       of the minimum <i>n</i></span><span style='font-size:11.0pt'> non-empty 
        !           226:       cells in range</span></p>
        !           227:     <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
        !           228: 11.0pt'>&amp;EXT(<i>expression</i></span><span style='font-size:11.0pt'>) Ð access 
        !           229:       to EXT function in </span><span style='font-size:11.0pt;font-family:
        !           230: "Courier New"'>lonnet</span></p>
        !           231:   </div>
        !           232:   <p class=MsoHeader><span style='font-size:14.0pt'><b>Fig. 2.2.7</b></span><span style='font-size:14.0pt'> 
        !           233:     Ð Available Functions in Spreadsheet</span></p>
        !           234:   <h3><a name="_Toc421867103">The Safe Environment</a></h3>
        !           235:   <p><span style='color:black'>The spreadsheet cells are evaluated in a &quot;Safe&quot; 
        !           236:     environment. The module Safe.pm is included in the standard systemperl RPM 
        !           237:     put out by the LON-CAPA developers, but is written by Tim Bunce and Malcolm 
        !           238:     Beattie. If you execute 'perldoc Safe' you can read the documentation for 
        !           239:     the module. </span></p>
        !           240:   <p><span style='color:black'>The Safe.pm module allows users to &quot;compile 
        !           241:     and execute code in restricted compartments&quot;. We use this to allow users 
        !           242:     to implement in their spreadsheets a restricted set of perl functions, variables, 
        !           243:     and operators. No one using the spreadsheet should ever need access to the 
        !           244:     basic IO functions of Perl, for example, so these are not made available to 
        !           245:     the users. </span></p>
        !           246:   <p><span style='color:black'>Each cell is evaluated within the same safe space, 
        !           247:     so cells can actually contain function and declarations. </span></p>
        !           248:   <p><span style='color:black'>There is information the user may need which is 
        !           249:     not contained in the cells of the spreadsheet. So we poke a hole in the safe 
        !           250:     space using the Safe::Hole module. This lets us allow access to external information. 
        !           251:     Obviously this needs to be done with some degree of caution. </span></p>
        !           252:   <p><span style='color:black'>At the beginning of lonspreadsheet.pm we have the 
        !           253:     following code: </span></p>
        !           254:   <p><span style='font-family:"Courier New";color:black'>use Safe;</span></p>
        !           255:   <p><span style='font-family:"Courier New";color:black'>use Safe::Hole;</span></p>
        !           256:   <p><span style='color:black'>The function &amp;initsheet, which is called when 
        !           257:     a spreadsheet is created or modified, defines the safe space for the execution 
        !           258:     of spreadsheet code: </span></p>
        !           259:   <p><span style='font-family:"Courier New";color:black'>sub initsheet {</span></p>
        !           260:   <p><span style='font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; my 
        !           261:     $safeeval = new Safe(shift);</span></p>
        !           262:   <p><span style='font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; my 
        !           263:     $safehole = new Safe::Hole;</span></p>
        !           264:   <p><span style='font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; $safeeval-&gt;permit(&quot;entereval&quot;);</span></p>
        !           265:   <p><span style='font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; $safeeval-&gt;permit(&quot;:base_math&quot;);</span></p>
        !           266:   <p><span style='font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; $safeeval-&gt;permit(&quot;sort&quot;);</span></p>
        !           267:   <p><span style='font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; $safeeval-&gt;deny(&quot;:base_io&quot;);</span></p>
        !           268:   <p><span style='font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; $safehole-&gt;wrap(\&amp;Apache::lonnet::EXT,$safeeval,'&amp;EXT');</span></p>
        !           269:   <p><span style='font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; my 
        !           270:     $code=&lt;&lt;'ENDDEFS';</span></p>
        !           271:   <p><span style='font-family:"Courier New";color:black'>.</span></p>
        !           272:   <p><span style='font-family:"Courier New";color:black'><i>functions and variables 
        !           273:     needed in the safe space are defined here</i></span></p>
        !           274:   <p><span style='font-family:"Courier New";color:black'>.</span></p>
        !           275:   <p><span style='font-family:"Courier New";color:black'>ENDDEFS</span></p>
        !           276:   <p><span style='font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; $safeeval-&gt;reval($code);</span></p>
        !           277:   <p><span style='font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; return 
        !           278:     $safeeval;</span></p>
        !           279:   <p><span style='font-family:"Courier New";color:black'>}</span></p>
        !           280:   <h3><a name="_Toc421867104">Change is coming</a></h3>
        !           281:   <p><span style='color:black'>Currently the spreadsheet is scheduled to undergo 
        !           282:     major revisions by the end of the summer. The goal of these revisions is to 
        !           283:     increase the speed and add some requested functionality. We hope to add: </span></p>
        !           284:   <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        !           285:     Improved exporting of the spreadsheet date to client side spreadsheets </span></p>
        !           286:   <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        !           287:     Exporting of spreadsheet xml - allowing users to save spreadsheets from their 
        !           288:     classes for reuse. </span></p>
        !           289:   <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        !           290:     Additional spreadsheet functions.</span></p>
        !           291:   <h3>&nbsp; </h3>
        !           292:   <h3><a name="_Toc421867105">Discussion</a></h3>
        !           293:   <p><span style='color:black'>loncapa/loncom/interface/lonfeedback.pm handles 
        !           294:     feedback on resources. Feedback can be for course discussion of a resource 
        !           295:     or to communicate with the author of the resource. In the latter case, a screenshot 
        !           296:     of the resource and (if applicable) the students previous attempts to solve 
        !           297:     the problem. </span></p>
        !           298:   <p><span style='color:black'>Course discussion messages appear at the bottom 
        !           299:     of the resource being discussed. There are two types of attribution in course 
        !           300:     discussion messages. Users may choose to have their LON-CAPA id shown to everyone 
        !           301:     or they may have it shown only to instructors. Complete anonymity is not an 
        !           302:     option. If the users choose to hide their LON-CAPA id (an 'anonymous' message), 
        !           303:     they can set the name given in the [PREF] page. </span></p>
        !           304:   <p><span style='color:black'><b>Figures 2.2.8</b></span><span
        !           305: style='color:black'> through <b>2.2.10</b></span><span style='color:black'> show 
        !           306:     a course discussion feedback cycle. </span></p>
        !           307:   <p><span style='color:black'> <img width=256 height=63
        !           308: src="Session%20Tw1_files/image013.jpg" v:shapes="_x0000_i1030"> </span></p>
        !           309:   <p><span style='color:black'><b>Fig 2.2.8</b></span><span
        !           310: style='color:black'> - A Simple Resource</span></p>
        !           311:   <p><span style='color:black'> <img width=301 height=240
        !           312: src="Session%20Tw1_files/image015.jpg" v:shapes="_x0000_i1031"> </span></p>
        !           313:   <p><span style='color:black'><b>Fig. 2.2.9</b></span><span
        !           314: style='color:black'> Composing Discussion Feedback&nbsp; </span></p>
        !           315:   <p><span style='color:black'> <img width=292 height=170
        !           316: src="Session%20Tw1_files/image017.jpg" v:shapes="_x0000_i1032"> </span></p>
        !           317:   <p><span style='color:black'><b>Fig 2.2.10</b></span><span
        !           318: style='color:black'> The Resource with Anonymous and Non-anonymous Discussion</span></p>
        !           319:   <h3><a name="_Toc421867106">Messaging</a></h3>
        !           320: </div>
        !           321: <h1><span style='font-size:10.0pt;font-family:"Courier New";font-weight:normal'>&nbsp;</span></h1>
        !           322: <p><span style='color:black'>loncapa/loncom/interface/lonmsg.pm provides functions 
        !           323:   for sending users messages. All messaging is currently done via lonmsg.pm. The 
        !           324:   following subroutines handle the sending of various types of messages: </span></p>
        !           325: <p><span style='font-family:"Courier New";color:black'>author_res_msg </span></p>
        !           326: <p><span style='color:black'>Send a message to the author of a resource. </span></p>
        !           327: <p><span style='font-family:"Courier New";color:black'>user_crit_msg </span></p>
        !           328: <p><span style='color:black'>Send a critical message to a user. Critical messages 
        !           329:   require the user to acknowledge receipt before any other action in LON-CAPA 
        !           330:   can be taken. </span></p>
        !           331: <p><span style='font-family:"Courier New";color:black'>user_crit_received </span></p>
        !           332: <p><span style='color:black'>Notify the sender of a critical message that the 
        !           333:   message has been received. </span></p>
        !           334: <p><span style='font-family:"Courier New";color:black'>user_normal_msg </span></p>
        !           335: <p><span style='color:black'>Send a non-critical message to a user. </span></p>
        !           336: <p><span style='font-family:"Courier New";color:black'>statuschange </span></p>
        !           337: <p><span style='color:black'>Change the status of a message (read, replied, forwarded, 
        !           338:   etc) </span></p>
        !           339: <p><span style='color:black'>The lonmsg::handler takes care of the display and 
        !           340:   sending of messages. If you have the time, communicate with yourself! Note: 
        !           341:   Critical messages are displayed on login to LON-CAPA. Some message types are 
        !           342:   only available for course coordinators. </span></p>
        !           343: <h3><span style='color:black'>&nbsp;</span></h3>
        !           344: <h3><a name="_Toc421867107">Resource Feedback</a></h3>
        !           345: <p><img border=0 width=432 height=304 id="_x0000_i1028"
        !           346: src="handout_files/image004.jpg"></p>
        !           347: <p class=MsoHeader><span style='font-size:14.0pt'><b>Fig. 2.2.11</b></span><span style='font-size:14.0pt'> 
        !           348:   Ð Example of a Feedback</span></p>
        !           349: <br
        !           350: clear=ALL style='page-break-before:always;'>
        !           351: <div class=Section2> </div>
        !           352: </body>
        !           353: </html>

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