skala
rrodriguez 15 years ago
commit 5e75c6a0d7
  1. 2
      documentation/changelog.html
  2. 2
      documentation/credits.html
  3. 58
      documentation/installation_guide.html
  4. 44
      documentation/installation_guide_es_ES.html
  5. 55
      main/admin/configure_homepage.php
  6. 62
      main/admin/index.php
  7. 14
      main/admin/session_list.php
  8. 39
      main/admin/settings.lib.php
  9. 98
      main/attendance/attendance_sheet.php
  10. 8
      main/auth/profile.php
  11. 95
      main/document/document.inc.php
  12. 88
      main/document/document.php
  13. 8
      main/document/downloadfolder.inc.php
  14. 4
      main/document/upload.php
  15. 6
      main/exercice/admin.php
  16. 102
      main/exercice/exercice.php
  17. 2
      main/exercice/exercice_submit.php
  18. 2
      main/exercice/exercise_admin.php
  19. 2
      main/exercice/hotpotatoes.php
  20. 2
      main/exercice/qti2.php
  21. 2
      main/exercice/question_create.php
  22. 4
      main/exercice/question_pool.php
  23. 4
      main/gradebook/lib/be/attendancelink.class.php
  24. 5
      main/gradebook/lib/be/dropboxlink.class.php
  25. 13
      main/gradebook/lib/be/exerciselink.class.php
  26. 4
      main/gradebook/lib/be/forumthreadlink.class.php
  27. 5
      main/gradebook/lib/be/learnpathlink.class.php
  28. 5
      main/gradebook/lib/be/studentpublicationlink.class.php
  29. 99
      main/gradebook/lib/gradebook_functions.inc.php
  30. BIN
      main/img/export_db.png
  31. BIN
      main/img/import_db.png
  32. BIN
      main/img/shared.png
  33. BIN
      main/img/show_test_results.gif
  34. 13
      main/inc/banner.inc.php
  35. 101
      main/inc/lib/asciimath/ASCIIMathML.js
  36. 15
      main/inc/lib/attendance.lib.php
  37. 2
      main/inc/lib/fckeditor/editor/fckdialog.html
  38. 9
      main/inc/lib/fckeditor/editor/fckdialogframe.html
  39. 22
      main/inc/lib/fckeditor/editor/filemanager/connectors/php/commands.php
  40. 12
      main/inc/lib/fckeditor/editor/filemanager/connectors/php/config.php
  41. 15
      main/inc/lib/fckeditor/editor/plugins/ImageManager/config.inc.php
  42. 2
      main/inc/lib/fckeditor/editor/plugins/ImageManager/fckplugin.js
  43. 2
      main/inc/lib/fckeditor/editor/plugins/ImageManager/fckplugin_compressed.js
  44. 10
      main/inc/lib/fckeditor/editor/plugins/ajaxfilemanager/ajax_file_upload.php
  45. 10
      main/inc/lib/fckeditor/editor/plugins/ajaxfilemanager/inc/config.base.php
  46. 353
      main/inc/lib/fckeditor/editor/plugins/asciimath/fck_asciimath.html
  47. 85
      main/inc/lib/fckeditor/editor/plugins/asciimath/fck_asciimath.js
  48. 2
      main/inc/lib/fckeditor/editor/plugins/asciimath/fckplugin.js
  49. 2
      main/inc/lib/fckeditor/editor/plugins/asciimath/fckplugin_compressed.js
  50. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/abcd.png
  51. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/aleph.png
  52. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/alpha.png
  53. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/angle.png
  54. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/approx.png
  55. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/backslash.png
  56. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/bara.png
  57. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/bba.png
  58. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/bbba.png
  59. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/beta.png
  60. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/bigcap.png
  61. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/bigcup.png
  62. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/bigvee.png
  63. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/bigwedge.png
  64. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/bot.png
  65. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/braxcket.png
  66. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/cap.png
  67. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/cc.png
  68. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/cca.png
  69. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/chi.png
  70. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/circ.png
  71. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/cong.png
  72. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/cup.png
  73. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/darr.png
  74. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/ddelta.png
  75. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/ddota.png
  76. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/delta.png
  77. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/diamond.png
  78. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/div.png
  79. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/dot.png
  80. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/dota.png
  81. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/dydx.png
  82. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/emptyset.png
  83. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/epsilon.png
  84. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/equiv.png
  85. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/eta.png
  86. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/exists.png
  87. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/forall.png
  88. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/fra.png
  89. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/gamma.png
  90. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/ge.png
  91. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/ggamma.png
  92. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/harr.png
  93. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/hata.png
  94. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/hharr.png
  95. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/if.png
  96. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/ifx.png
  97. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/in.png
  98. 8
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/index.html
  99. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/infty.png
  100. BIN
      main/inc/lib/fckeditor/editor/plugins/asciimath/images/int.png
  101. Some files were not shown because too many files have changed in this diff Show More

@ -29,7 +29,7 @@
<h3>Debugging</h3>
<ul>
<li></li>
<li>Duplicate query calls have been removed from .../install/update-db-18.6.2-1.8.7.inc.php. The bug has been reported (with solution given) by Omar Arino (Bug #1713)</li>
</ul>
<h3>Deprecated files</h3>

@ -438,6 +438,7 @@ rewritten by
<li>Second integration: FCKEditor</li>
<li>Update to FCKEditor 2.6.2: Julio Montoya Armas(gugli100@gmail.com)</li>
<li>Update to FCKEditor 2.6.6 and addition of other plugins: Ivan Tcholakov</li>
<li>ASCIIMathML-based formula rendering: Furio Petrossi for advocacy, reserch and recommendations</li>
</ul>
<h1>Translations</h1>
@ -503,6 +504,7 @@ of information requests and organizing great community events</li>
<li> Hubert Borderiou - various bugfixes in 1.8.7 and very accurate bug reporting contributions </li>
<li> David Auzeine- various bugfixes in 1.8.7</li>
<li> Anna Frovola for reporting bugs for 1.8.7</li>
<li> Omar Arino (omar.arino _at__ linuxdojo.com.ar) - various bugfixes in 1.8.7.1</li>
</ul>

@ -44,6 +44,7 @@
<li><a href="#5._Administration_section">Administration section</a></li>
<li><a href="#6._LDAP">LDAP&nbsp;</a></li>
<li><a href="#7._Mathematical_formulas">Mathematical formulas with LaTeX</a></li>
<li><a href="#8._ASCIIMathML_mathematical_formulas">Mathematical formulas with ASCIIMathML</a></li>
</ol>
<br />
@ -254,7 +255,7 @@ date.timezone = 'America/New_York'
<li>php-mysql The mysql shared extension for php</li>
<li>php-pcre The pcre shared extension for php</li>
<li>php-session The session shared extension for php</li>
<li>php-zlib The zlib shared extension for php</li>
<li>php-zlib The zlib shared extension for php</li>
<li>(optional) php-ldap if you want to be able to use LDAP authentication</li>
</ul>
@ -263,7 +264,7 @@ date.timezone = 'America/New_York'
<li>php-ctype</li>
<li>php-gd</li>
<li>php-iconv</li>
<li>php-json</li>
<li>php-json</li>
<li>php-mbstring</li>
</ul>
<p><a href="http://dev.mysql.com/doc/mysql/en/index.html"></a><br /></p>
@ -634,6 +635,59 @@ copy mimetex.exe (for windows) or mimetex.cgi (for linux) from <i>chamilo/main/i
to insert mathematical formulas into your documents.<br />
<hr style="width: 100%; height: 2px;" />
<h2><a name="8._ASCIIMathML_mathematical_formulas"></a>8. Mathematical formulas with ASCIIMathML</h2>
<p>Mathematical formulas may be rendered on web-pages using the script ASCIIMathML.js (a customized version for Chamilo). For more information about this script
and about the ASCIIMath formula syntax see <a href="http://www1.chapman.edu/~jipsen/mathml/asciimath.html">http://www1.chapman.edu/~jipsen/mathml/asciimath.html</a>
and <a href="http://dlippman.imathas.com/asciimathtex/AMT.html">http://dlippman.imathas.com/asciimathtex/AMT.html</a>.</p>
<p>For writing ASCIIMath formulas in documents, a correspondent plugin for the online editor should be activated. For doing this,
see the platform administration section and open the page "Administration &gt; Configuration settings &gt; WYSIWYG Editor".
Enable the setting <strong>"ASCIIMathML mathematical editor"</strong>.</p>
<p>Inside documents, the script ASCIIMathML.js renders mathematical formulas in two altrnative ways:</p>
<ul>
<li>By translation ASCIIMath formula notation into MathML code. MathML standard currently is supported by the following browsers:
<ul>
<li>Mozilla Firefox, you may consider installing STIX fonts (<a href="http://www.stixfonts.org">http://www.stixfonts.org</a>) on your client machines for nice looking formulas</li>
<li>Internet Explorer 6 or higher with the add-on MathPlayer 2.0 or higher (<a href="http://www.dessci.com/en/products/mathplayer">http://www.dessci.com/en/products/mathplayer</a>)</li>
<li>Opera 9.5 or higher</li>
</ul>
</li>
<li>For browser that do not support MathML - by translation ASCIIMath formula notation into TeX notation and passing it to
an external service. The external service produces and returns an image that contains the formula. This way is so called
"image-based fallback".
</li>
</ul>
<p>For providing <strong>image-based fallback</strong> in a production system, you should pick up and install on your server software for TeX rendering, such as:
<ul>
<li>mimeTeX - <a href="http://www.forkosh.dreamhost.com/source_mimetex.html">http://www.forkosh.dreamhost.com/source_mimetex.html</a>.
See <a href="#7._Mathematical_formulas">"7. Mathematical formulas with LaTeX"</a> on how to install the mimetex executable file on your server</li>
<li>mathTeX - <a href="http://www.forkosh.com/mathtex.html">http://www.forkosh.com/mathtex.html</a>. Browse the site for installation instructions</li>
</ul>
<p>As an alternative, you may try to use some public services for TeX rendering, such as:</p>
<ul>
<li>MathTran - <a href="http://www.mathtran.org">http://www.mathtran.org</a></li>
<li>Google Chart Tools - <a href="http://code.google.com/apis/charttools">http://code.google.com/apis/charttools</a></li>
</ul>
<p>Open with a text editor the file <strong>.../chamilo/main/inc/lib/asciimath/ASCIIMathML.js</strong>.
Find somewhere at the beginning the line that initializes the variable <strong>AMTcgiloc</strong>.
You may need to alter the setting to be for example:</p>
<ul>
<li><div class="code">var AMTcgiloc = "http://mychamiloserver.org/cgi-bin/mimetex.cgi";</div></li>
<li><div class="code">var AMTcgiloc = "http://mychamiloserver.org/cgi-bin/mathtex.cgi";</div></li>
<li><div class="code">var AMTcgiloc = "http://www.mathtran.org/cgi-bin/mathtran?tex=";</div></li>
<li><div class="code">var AMTcgiloc = "http://chart.apis.google.com/chart?cht=tx&chs=1x0&chl=";</div></li>
<li>... or something else</li>
</ul>
<p>For testing how the variable <strong>AMTcgiloc</strong> may be set, there are some examples (as comments) inside the script.</p>
<p>
<hr style="width: 100%; height: 2px;" />
<br />
<br />
Contact address<br />

@ -52,6 +52,7 @@ no son requeridos para usar Chamilo LMS. &nbsp;Por favor, lea completamente este
<li><a href="#5._Administration_section">Sección de administración</a></li>
<li><a href="#6._LDAP">LDAP&nbsp;</a></li>
<li><a href="#7._Mathematical_formulas">Fórmulas Matemáticas con LaTeX</a></li>
<li><a href="#8._ASCIIMathML_mathematical_formulas">Fórmulas Matemáticas con ASCIIMathML</a></li>
</ol>
@ -720,9 +721,52 @@ Linux usando el siguiente comando:</i>
<p>&nbsp;</p>
<p>Este procedimiento creará un nuevo icono en su editor en línea de Chamilo, el cual hará posible la inserción de fórmulas matemáticas en sus documentos.<br />
<br />
<hr style="width: 100%; height: 2px;" />
<h2><a name="8._ASCIIMathML_mathematical_formulas"></a>8. Fórmulas matemáticas con ASCIIMathML</h2>
<p>Las fórmulas matemáticas pueden ser renderizadas en páginas web usando el script ASCIIMathML.js (en su versión modificada para Chamilo). Para más información sobre este script y sobre la sintaxis de fórmulas de ASCIIMath, ver <a href="http://www1.chapman.edu/~jipsen/mathml/asciimath.html">http://www1.chapman.edu/~jipsen/mathml/asciimath.html</a> y <a href="http://dlippman.imathas.com/asciimathtex/AMT.html">http://dlippman.imathas.com/asciimathtex/AMT.html</a>.</p>
<p>Para escribir fórmulas ASCIIMath en documentos, es necesario activar el plugin correspondiente del editor en línea. Para hacerlo, ver la sección de administración de la plataforma, "Administración &gt; Parámetros de configuración &gt; &gt; Editor WYSIWYG".
Activar el parámetro <strong>"Editor matemático ASCIIMathML"</strong>.</p>
<p>El script ASCIIMathML.js puede mostrar fórmulas matemáticas en los documentos de dos formas:</p>
<ul>
<li>Traduciendo las fórmulas en notación ASCIIMath en código MathML. El estándar MathML está soportado actualmente sobre tres navegadores:
<ul>
<li>Mozilla Firefox: debería considerar la instalación de las fuentes de carácter STIX (<a href="http://www.stixfonts.org">http://www.stixfonts.org</a>) en sus máquinas cliente para tener fórmulas bonitas</li>
<li>Internet Explorer 6 o superior, con el add-on MathPlayer 2.0 o superior (<a href="http://www.dessci.com/en/products/mathplayer">http://www.dessci.com/en/products/mathplayer</a>)</li>
<li>Opera 9.5 o superior</li>
</ul>
</li>
<li>Traduciendo la notación de fórmulas ASCIIMath en notación TeX y pasándolo a un servicio externo. Se debe usar en el caso de navegadores que no soporten MathML. El servicio externo produce y devuelve un imagen que contiene la fórmula. Esta técnica se llama "image-based fallback".
</li>
</ul>
<p>Para proveer <strong>image-based fallback</strong> en un sistema en producción, debería seleccionar e instalar en su servidor algun software de renderización TeX, como:
<ul>
<li>mimeTeX - <a href="http://www.forkosh.dreamhost.com/source_mimetex.html">http://www.forkosh.dreamhost.com/source_mimetex.html</a>.
Ver <a href="#7._Mathematical_formulas">"7. Fórmulas matemáticas con LaTeX"</a> para instalar el ejecutable mimetex en su servidor</li>
<li>mathTeX - <a href="http://www.forkosh.com/mathtex.html">http://www.forkosh.com/mathtex.html</a>. Ver el sitio para instrucciones de instalación</li>
</ul>
<p>Y como alternativa, puede intentar servicios públicos, como:</p>
<ul>
<li>MathTran - <a href="http://www.mathtran.org">http://www.mathtran.org</a></li>
<li>Google Chart Tools - <a href="http://code.google.com/apis/charttools">http://code.google.com/apis/charttools</a></li>
</ul>
<p>Abrir el fichero <strong>.../chamilo/main/inc/lib/asciimath/ASCIIMathML.js</strong> con un editor de texto.
Encuentre un lugar al inicio de la línea que inicializa la variable <strong>AMTcgiloc</strong>.
Podría necesitar modificar el ejemplo para tener algo como:</p>
<ul>
<li><div class="code">var AMTcgiloc = "http://mychamiloserver.org/cgi-bin/mimetex.cgi";</div></li>
<li><div class="code">var AMTcgiloc = "http://mychamiloserver.org/cgi-bin/mathtex.cgi";</div></li>
<li><div class="code">var AMTcgiloc = "http://www.mathtran.org/cgi-bin/mathtran?tex=";</div></li>
<li><div class="code">var AMTcgiloc = "http://chart.apis.google.com/chart?cht=tx&chs=1x0&chl=";</div></li>
<li>... o algo similar</li>
</ul>
<p>Para formas de probar como la variable <strong>AMTcgiloc</strong> tiene que ser configurada, existen unos ejemplos (en comentario) dentro del script.</p>
<p>
<hr style="width: 100%; height: 2px;" />
<br />
<br />

@ -255,7 +255,7 @@ if (!empty($action)) {
case 'insert_link':
case 'edit_link':
$link_index = intval($_POST['link_index']);
$insert_where = intval($_POST['insert_where']);
$link_name = trim(stripslashes($_POST['link_name']));
$link_url = trim(stripslashes($_POST['link_url']));
@ -279,7 +279,7 @@ if (!empty($action)) {
} elseif (empty($link_name)) {
$errorMsg = get_lang('PleaseEnterLinkName');
} else {
// New links are added as new files in the home/ directory
if ($action == 'insert_link' || $action == 'insert_tabs' || empty($filename) || strstr($filename, '/') || !strstr($filename, '.html')) {
$filename = replace_dangerous_char($link_name, 'strict').'.html';
@ -296,14 +296,20 @@ if (!empty($action)) {
// Get the contents of home_menu_en.html (or active menu language
// version) into $home_menu as an array of one entry per line
$home_menu = file($homep.$menuf.'_'.$lang.$ext);
$home_menu = implode("\n", $home_menu);
$home_menu = api_to_system_encoding($home_menu, api_detect_encoding(strip_tags($home_menu)));
$home_menu = explode("\n", $home_menu);
$home_menu = array_values(array_filter(array_map('trim', $home_menu), 'strlen'));
// Prepare place to insert the new link into (default is end of file)
if ($insert_where < -1 || $insert_where > (sizeof($home_menu) - 1)) {
$insert_where = sizeof($home_menu) - 1;
}
//
// For each line of the file, remove trailing spaces and special chars
foreach ($home_menu as $key => $enreg) {
$home_menu[$key] = trim($enreg);
}
//foreach ($home_menu as $key => $enreg) {
// $home_menu[$key] = trim($enreg);
//}
//
// If the given link url is empty, then replace the link url by a link to the link file created
if (empty($link_url)) {
$link_url = api_get_path(WEB_PATH).'index.php?include='.urlencode($filename);
@ -474,6 +480,7 @@ if (!empty($action)) {
$home_menu = api_to_system_encoding($home_menu, api_detect_encoding(strip_tags($home_menu)));
$home_menu = explode("\n", $home_menu);
}
$home_menu = array_values(array_filter(array_map('trim', $home_menu), 'strlen'));
break;
case 'insert_tabs':
// This request is the preparation for the addition of an item in home_menu
@ -493,6 +500,7 @@ if (!empty($action)) {
$home_menu = api_to_system_encoding($home_menu, api_detect_encoding(strip_tags($home_menu)));
$home_menu = explode("\n", $home_menu);
}
$home_menu = array_values(array_filter(array_map('trim', $home_menu), 'strlen'));
break;
case 'edit_tabs':
case 'edit_link':
@ -512,27 +520,30 @@ if (!empty($action)) {
if (!empty($home_menu)) {
$home_menu = implode("\n", $home_menu);
$home_menu = api_to_system_encoding($home_menu, api_detect_encoding(strip_tags($home_menu)));
$home_menu = explode("\n", $home_menu);
$home_menu = explode("\n", $home_menu);
}
$link_index = intval($_GET['link_index']);
$target_blank = false;
$link_name = '';
$link_url = '';
$home_menu_new = array();
//Cleaning array
foreach ($home_menu as $item) {
if(!empty($item)) {
$home_menu_new[] = $item;
}
}
$home_menu = $home_menu_new;
//$home_menu_new = array();
//
//Cleaning array
//foreach ($home_menu as $item) {
// if(!empty($item)) {
// $home_menu_new[] = $item;
// }
//}
//$home_menu = $home_menu_new;
// Cleaning the array
$home_menu = array_values(array_filter(array_map('trim', $home_menu), 'strlen'));
// For each line of the home_menu file
foreach ($home_menu as $key => $enreg) {
foreach ($home_menu as $key => $enreg) {
// Check if the current item is the one we want to update
if ($key == $link_index) {
// This is the link we want to update
@ -659,7 +670,9 @@ switch ($action) {
$form->addElement('html', '<td><select name="insert_where"><option value="-1">'.get_lang('FirstPlace').'</option>');
if (is_array($home_menu)){
foreach ($home_menu as $key => $enreg) {
$form->addElement('html', '<option value="'.$key.'" '.($formSent && $insert_where == $key ? 'selected="selected"' : '').' >'.get_lang('After').' &quot;'.trim(strip_tags($enreg)).'&quot;</option>');
if (strlen($enreg = trim(strip_tags($enreg))) > 0) {
$form->addElement('html', '<option value="'.$key.'" '.($formSent && $insert_where == $key ? 'selected="selected"' : '').' >'.get_lang('After').' &quot;'.$enreg.'&quot;</option>');
}
}
}
$form->addElement('html', '</select></td></tr>');
@ -886,7 +899,7 @@ switch ($action) {
$delete_link = '<a href="'.api_get_self().'?action=delete_link&amp;link_index='.$i.'" onclick="javascript:if(!confirm(\''.addslashes(api_htmlentities(get_lang('ConfirmYourChoice'), ENT_QUOTES)).'\')) return false;">'.Display::return_icon('delete.gif', get_lang('Delete')).'</a>';
echo str_replace(array('href="'.api_get_path(WEB_PATH).'index.php?include=', '</li>'), array('href="'.api_get_path(WEB_CODE_PATH).'admin/'.basename(api_get_self()).'?action=open_link&link=', '<br />'.$edit_link.' '.$delete_link.'</li>'), $enreg);
$i++;
}
}
}
?>
</ul>

@ -99,44 +99,40 @@ if (api_is_platform_admin()) {
<?php
}
//Advance search link moved
/* <li><a href="course_list.php?search=advanced"><?php echo api_ucfirst(get_lang('AdvancedSearch')); ?></a></li> */
if(api_is_platform_admin()) {
?>
<div class="admin_section">
<h4><?php Display::display_icon('course.gif', get_lang('Courses')); ?> <?php echo api_ucfirst(get_lang('Courses')); ?></h4>
<div style="list-style-type:none"><form method="get" action="course_list.php">
<input type="text" name="keyword" value="<?php echo $keyword_url; ?>"/>
<button class="search" type="submit"> <?php echo get_lang('Search');?>
</button>
</form></div>
<ul>
<li>
<!-- <a href="course_list.php?search=advanced"><?php echo api_ucfirst(get_lang('AdvancedSearch')); ?></a> -->
</li>
<li><a href="course_list.php"><?php echo get_lang('CourseList') ?></a></li>
<li><a href="course_add.php"><?php echo get_lang('AddCourse') ?></a></li>
<li><a href="course_export.php"><?php echo get_lang('ExportCourses'); ?></a></li>
<li><a href="course_import.php"><?php echo get_lang('ImportCourses'); ?></a></li>
<!--<li><a href="course_virtual.php"><?php //echo get_lang('AdminManageVirtualCourses') ?></a></li>-->
<li><a href="course_category.php"><?php echo get_lang('AdminCategories'); ?></a></li>
<li><a href="subscribe_user2course.php"><?php echo get_lang('AddUsersToACourse'); ?></a></li>
<li><a href="course_user_import.php"><?php echo get_lang('ImportUsersToACourse'); ?></a></li>
<?php if (api_get_setting('search_enabled')=='true') { ?>
<li><a href="specific_fields.php"><?php echo get_lang('SpecificSearchFields'); ?></a></li>
<?php } ?>
<?php
if(isset($extAuthSource) && isset($extAuthSource['ldap']) && count($extAuthSource['ldap'])>0){
?>
<!-- dynamic ldap code -->
<li><a href="ldap_import_students.php"><?php echo get_lang('ImportLDAPUsersIntoCourse');?></a></li>
<!-- dynamic ldap code -->
<h4><?php Display::display_icon('course.gif', get_lang('Courses')); ?> <?php echo api_ucfirst(get_lang('Courses')); ?></h4>
<div style="list-style-type:none">
<form method="get" action="course_list.php">
<input type="text" name="keyword" value="<?php echo $keyword_url; ?>"/>
<button class="search" type="submit"> <?php echo get_lang('Search');?></button>
</form>
</div>
<ul>
<li><a href="course_list.php"><?php echo get_lang('CourseList') ?></a></li>
<li><a href="course_add.php"><?php echo get_lang('AddCourse') ?></a></li>
<li><a href="course_export.php"><?php echo get_lang('ExportCourses'); ?></a></li>
<li><a href="course_import.php"><?php echo get_lang('ImportCourses'); ?></a></li>
<!-- <li><a href="course_virtual.php"><?php //echo get_lang('AdminManageVirtualCourses') ?></a></li> -->
<li><a href="course_category.php"><?php echo get_lang('AdminCategories'); ?></a></li>
<li><a href="subscribe_user2course.php"><?php echo get_lang('AddUsersToACourse'); ?></a></li>
<li><a href="course_user_import.php"><?php echo get_lang('ImportUsersToACourse'); ?></a></li>
<?php if (api_get_setting('search_enabled')=='true') { ?>
<li><a href="specific_fields.php"><?php echo get_lang('SpecificSearchFields'); ?></a></li>
<?php } ?>
<?php
}
?>
if(isset($extAuthSource) && isset($extAuthSource['ldap']) && count($extAuthSource['ldap'])>0){
?>
<!-- dynamic ldap code -->
<li><a href="ldap_import_students.php"><?php echo get_lang('ImportLDAPUsersIntoCourse');?></a></li>
<!-- dynamic ldap code -->
<?php
}
?>
</ul>
</div>

@ -146,12 +146,12 @@ if (isset ($_GET['search']) && $_GET['search'] == 'advanced') {
//Get list sessions
$sort = ($sort != "name_category")? 's.'.$sort : 'category_name';
$query = "SELECT s.id, s.name, s.nbr_courses, s.date_start, s.date_end, u.firstname, u.lastname , sc.name as category_name, s.visibility
FROM $tbl_session s
LEFT JOIN $tbl_session_category sc ON s.session_category_id = sc.id
INNER JOIN $tbl_user u ON s.id_coach = u.user_id
$where
ORDER BY $sort ";
$query = "SELECT s.id, s.name, s.nbr_courses, s.date_start, s.date_end, u.firstname, u.lastname , sc.name as category_name, s.visibility ".
" FROM $tbl_session s ".
" LEFT JOIN $tbl_session_category sc ON s.session_category_id = sc.id ".
" INNER JOIN $tbl_user u ON s.id_coach = u.user_id ".
$where.
" ORDER BY $sort LIMIT $from,".($limit+1);
//query which allows me to get a record without taking into account the page
$query_rows = "SELECT count(*) as total_rows
FROM $tbl_session s
@ -375,4 +375,4 @@ if (isset ($_GET['search']) && $_GET['search'] == 'advanced') {
<?php
}
Display::display_footer();
?>
?>

@ -5,7 +5,7 @@
*
* @author Julio Montoya <gugli100@gmail.com>
* @author Guillaume Viguier <guillaume@viguierjust.com>
*
*
* @since Chamilo 1.8.7
* @package chamilo.admin
*/
@ -282,10 +282,10 @@ function handle_stylesheets()
<?php
echo '<form name="stylesheets" method="post" action="'.api_get_self().'?category='.Security::remove_XSS($_GET['category']).'">';
echo '<br /><select name="style" onChange="load_preview(this)" >';
$list_of_styles = array();
$list_of_names = array();
if ($handle = @opendir(api_get_path(SYS_PATH).'main/css/')) {
$counter=1;
while (false !== ($style_dir = readdir($handle))) {
@ -304,7 +304,7 @@ function handle_stylesheets()
if ($is_style_changeable) {
$list_of_styles[$style_dir] = "<option value=\"".$style_dir."\" ".$selected." /> $show_name </option>";
$list_of_names[$style_dir] = $show_name;
$list_of_names[$style_dir] = $show_name;
//echo "<input type=\"radio\" name=\"style\" value=\"".$style_dir."\" ".$selected." onClick=\"parent.preview.location='style_preview.php?style=".$style_dir."';\"/>";
//echo '<a href="style_preview.php?style='.$style_dir.'" target="preview">'.$show_name.'</a>';
} else {
@ -318,12 +318,13 @@ function handle_stylesheets()
@closedir($handle);
}
//Sort styles in alphabetical order
asort($list_of_names);
asort($list_of_names);
foreach($list_of_names as $style_dir=>$item) {
echo $list_of_styles[$style_dir];
}
echo '</select><br />';
//echo '</select><br />';
echo '</select>&nbsp;&nbsp;';
//var_dump($list_of_names);
if ($is_style_changeable){
echo '<button class="save" type="submit" name="submit_stylesheets"> '.get_lang('SaveSettings').' </button></form>';
@ -350,7 +351,7 @@ function upload_stylesheet($values,$picture)
{
mkdir(api_get_path(SYS_CODE_PATH).'css/'.$style_name.'/', api_get_permissions_for_new_directories());
}
$info = pathinfo($picture['name']);
if($info['extension'] == 'zip') {
// Try to open the file and extract it in the theme
@ -361,7 +362,7 @@ function upload_stylesheet($values,$picture)
$valid = true;
$single_directory = true;
$invalid_files = array();
for($i =0; $i < $numFiles; $i++) {
$file = $zip->statIndex($i);
if(substr($file['name'], -1) != "/") {
@ -371,7 +372,7 @@ function upload_stylesheet($values,$picture)
$invalid_files[] = $file['name'];
}
}
if(strpos($file['name'], "/") === false) {
$single_directory = false;
}
@ -393,7 +394,7 @@ function upload_stylesheet($values,$picture)
for($i = 0; $i < $numFiles; $i++) {
$entry = $zip->getNameIndex($i);
if ( substr($entry, -1) == '/') continue;
$pos_slash = strpos($entry, '/');
$entry_without_first_dir = substr($entry, $pos_slash + 1);
// If there is still a slash, we need to make sure the directories are created
@ -403,21 +404,21 @@ function upload_stylesheet($values,$picture)
@mkdir($extraction_path.dirname($entry_without_first_dir), $mode = 0777, true);
}
}
$fp = $zip->getStream($entry);
$ofp = fopen( $extraction_path. dirname($entry_without_first_dir).'/'.basename($entry), 'w');
while ( ! feof($fp)) {
fwrite($ofp, fread($fp, 8192));
}
fclose($fp);
fclose($ofp);
}
}
}
$zip->close();
} else {
Display::display_error_message(get_lang('ErrorReadingZip').$info['extension'], false);
}
@ -949,9 +950,9 @@ function select_timezone_value() {
/**
* Returns an array containing the list of options used to populate the gradebook_number_decimals variable
*
*
* @return array List of gradebook_number_decimals options
*
*
* @author Guillaume Viguier <guillaume.viguier@beeznest.com>
*/
function select_gradebook_number_decimals() {
@ -961,9 +962,9 @@ function select_gradebook_number_decimals() {
/**
* Updates the gradebook score custom values using the scoredisplay class of the
* gradebook module
*
*
* @param array List of gradebook score custom values
*
*
* @author Guillaume Viguier <guillaume.viguier@beeznest.com>
*/
function update_gradebook_score_display_custom_values($values) {

@ -2,7 +2,7 @@
/* For licensing terms, see /license.txt */
/**
* View (MVC patter) for attendance sheet (list, edit, add)
* View (MVC patter) for attendance sheet (list, edit, add)
* @author Christian Fasanando <christian1827@gmail.com>
* @package chamilo.attendance
*/
@ -16,7 +16,7 @@ if (api_is_allowed_to_edit(null, true)) {
$param_gradebook = '&gradebook='.$_SESSION['gradebook'];
}
echo '<div class="actions" style="margin-bottom:30px">';
echo '<a href="index.php?'.api_get_cidreq().'&action=calendar_list&attendance_id='.$attendance_id.$param_gradebook.'">'.Display::return_icon('calendar_up.gif',get_lang('AttendanceCalendar')).' '.get_lang('AttendanceCalendar').'</a>';
echo '<a href="index.php?'.api_get_cidreq().'&action=calendar_list&attendance_id='.$attendance_id.$param_gradebook.'">'.Display::return_icon('calendar_up.gif',get_lang('AttendanceCalendar')).' '.get_lang('AttendanceCalendar').'</a>';
echo '</div>';
$message_information = get_lang('AttendanceSheetDescription');
@ -26,27 +26,32 @@ if (api_is_allowed_to_edit(null, true)) {
Display::display_normal_message($message, false);
}
?>
<?php
<?php
if (count($users_in_course) > 0) {
if (count($users_in_course) > 0) {
?>
<form method="post" action="index.php?action=attendance_sheet_add&<?php echo api_get_cidreq().$param_gradebook ?>&attendance_id=<?php echo $attendance_id?>" >
<div class="attendance-sheet-content" style="width:100%;background-color:#E1E1E1;border:1px solid gray;margin-top:20px;">
<div class="attendance-users-table" style="width:40%;float:left;margin:0px;padding:0px;">
<table class="data_table" width="100%">
<tr class="row_odd" >
<tr class="row_odd" >
<th height="65px" width="25px" ><?php echo get_lang('DisplayOrder')?></th>
<th width="30px" ><?php echo get_lang('Photo')?></th>
<?php if (api_is_western_name_order()) { ?>
<th><?php echo get_lang('FirstName')?></th>
<th><?php echo get_lang('LastName')?></th>
<?php } else { ?>
<th><?php echo get_lang('LastName')?></th>
<th><?php echo get_lang('FirstName')?></th>
<?php } ?>
<th width="100px"><?php echo get_lang('AttendancesFaults')?></th>
</tr>
<?php
</tr>
<?php
$i = 1;
$class = '';
foreach ($users_in_course as $data) {
$faults = 0;
if ($i%2 == 0) {$class='row_odd';}
@ -55,8 +60,13 @@ if (api_is_allowed_to_edit(null, true)) {
<tr class="<?php echo $class ?>">
<td height="50px"><center><?php echo $i ?></center></td>
<td><?php echo $data['photo'] ?></td>
<?php if (api_is_western_name_order()) { ?>
<td><?php echo $data['firstname'] ?></td>
<td><?php echo $data['lastname'] ?></td>
<?php } else { ?>
<td><?php echo $data['lastname'] ?></td>
<td><?php echo $data['firstname'] ?></td>
<?php } ?>
<td><center><div class="attendance-faults-bar" style="background-color:<?php echo (!empty($data['result_color_bar'])?$data['result_color_bar']:'none') ?>"><?php echo $data['attendance_result'] ?></div></center></td>
</tr>
<?php
@ -75,38 +85,38 @@ if (api_is_allowed_to_edit(null, true)) {
$date = $calendar['date'];
$time = $calendar['time'];
$datetime = $date.'<br />'.$time;
$img_lock = Display::return_icon('lock.gif',get_lang('DateUnLock'),array('class'=>'img_lock','id'=>'datetime_column_'.$calendar['id']));
$img_lock = Display::return_icon('lock.gif',get_lang('DateUnLock'),array('class'=>'img_lock','id'=>'datetime_column_'.$calendar['id']));
if (!empty($calendar['done_attendance'])){
$datetime = '<font color="blue">'.$date.'<br />'.$time.'</font>';
}
$disabled_check = 'disabled';
$input_hidden = '<input type="hidden" id="hidden_input_'.$calendar['id'].'" name="hidden_input[]" value="" disabled />';
$input_hidden = '<input type="hidden" id="hidden_input_'.$calendar['id'].'" name="hidden_input[]" value="" disabled />';
if ($next_attendance_calendar_id == $calendar['id']) {
$input_hidden = '<input type="hidden" id="hidden_input_'.$calendar['id'].'" name="hidden_input[]" value="'.$calendar['id'].'" />';
$disabled_check = '';
$img_lock = Display::return_icon('unlock.gif',get_lang('DateLock'),array('class'=>'img_unlock','id'=>'datetime_column_'.$calendar['id']));
}
?>
}
?>
<th height="65px" style="padding:1px 5px;" ><?php echo '<center><div style="font-size:10px;min-width:80px;width:80px;">'.$datetime.'&nbsp;<span id="attendance_lock" style="cursor:pointer">'.$img_lock.'</span><br /><input type="checkbox" id="checkbox_head_'.$calendar['id'].'" '.$disabled_check.' checked />'.$input_hidden.'</div></center>' ?></th>
<?php }
<?php }
} else { ?>
<th height="65px" style="padding:5px;"><span><a href="index.php?<?php echo api_get_cidreq() ?>&action=calendar_list&attendance_id=<?php echo $attendance_id.$param_gradebook ?>">
<?php echo Display::return_icon('calendar_up.gif',get_lang('AttendanceCalendar')).' '.get_lang('GoToAttendanceCalendar') ?></a></span></th>
<?php } ?>
</tr>
<?php
</tr>
<?php
$i = 0;
foreach ($users_in_course as $user) {
foreach ($users_in_course as $user) {
$class = '';
if ($i%2==0) {$class = 'row_even';}
else {$class = 'row_odd';}
?>
?>
<tr class="<?php echo $class ?>">
<?php
<?php
if (count($attendant_calendar) > 0 ) {
foreach ($attendant_calendar as $calendar) {
$checked = 'checked';
foreach ($attendant_calendar as $calendar) {
$checked = 'checked';
if (isset($users_presence[$user['user_id']][$calendar['id']]['presence'])) {
$presence = $users_presence[$user['user_id']][$calendar['id']]['presence'];
if (intval($presence) == 1) {
@ -123,32 +133,32 @@ if (api_is_allowed_to_edit(null, true)) {
}
?>
<td height="50px" style="<?php echo $style_td ?>" class="checkboxes_col_<?php echo $calendar['id'] ?>"><center><input type="checkbox" name="check_presence[<?php echo $calendar['id'] ?>][]" value="<?php echo $user['user_id'] ?>" <?php echo $disabled.' '.$checked ?> /><span class="<?php echo 'anchor_'.$calendar['id'] ?>"></span></center></td>
<?php }
<?php }
} else { ?>
<td height="50px" class="checkboxes_col_<?php echo $calendar['id'] ?>"><center>&nbsp;</center></td>
<?php } ?>
</tr>
<?php $i++ ;
}
?>
<?php $i++ ;
}
?>
</table>
</div>
</div>
<div class="clear"></div>
<div style="margin-top:20px;"><button type="submit" class="save"><?php echo get_lang('Save') ?></button></div>
</form>
<?php } else {
echo '<div><a href="'.api_get_path(WEB_CODE_PATH).'user/user.php?'.api_get_cidreq().'">'.get_lang('ThereAreNoRegisteredLearnersInsidetheCourse').'</a></div>';
<?php } else {
echo '<div><a href="'.api_get_path(WEB_CODE_PATH).'user/user.php?'.api_get_cidreq().'">'.get_lang('ThereAreNoRegisteredLearnersInsidetheCourse').'</a></div>';
}
} else {
// View for students
?>
?>
<h3><?php echo get_lang('AttendanceSheetReport') ?></h3>
<?php if(!empty($users_presence)) { ?>
<div>
@ -164,27 +174,27 @@ if (api_is_allowed_to_edit(null, true)) {
<br />
<center>
<table class="data_table">
<tr class="row_odd" >
<tr class="row_odd" >
<th><?php echo get_lang('AttendanceCalendar')?></th>
<th><?php echo get_lang('Attendance')?></th>
<th><?php echo get_lang('Attendance')?></th>
</tr>
<?php
<?php
if (!empty($users_presence)) {
$i = 0;
foreach($users_presence[$user_id] as $presence) {
foreach($users_presence[$user_id] as $presence) {
$class = '';
if ($i%2==0) {$class = 'row_even';}
else {$class = 'row_odd';}
else {$class = 'row_odd';}
?>
<tr class="<?php echo $class ?>"><td><?php echo Display::return_icon('lp_calendar_event.png',get_lang('DateTime')).' '.$presence['date_time'] ?></td><td><center><?php echo $presence['presence']?Display::return_icon('checkbox_on.gif',get_lang('Presence')):Display::return_icon('checkbox_off.gif',get_lang('Presence')) ?></center></td></tr>
<?php }
<tr class="<?php echo $class ?>"><td><?php echo Display::return_icon('lp_calendar_event.png',get_lang('DateTime')).' '.$presence['date_time'] ?></td><td><center><?php echo $presence['presence']?Display::return_icon('checkbox_on.gif',get_lang('Presence')):Display::return_icon('checkbox_off.gif',get_lang('Presence')) ?></center></td></tr>
<?php }
} else { ?>
<tr><td colspan="2"><center><?php echo get_lang('YouDoNotHaveDoneAttendances')?></center></td></tr>
<tr><td colspan="2"><center><?php echo get_lang('YouDoNotHaveDoneAttendances')?></center></td></tr>
<?php }
?>
</table>
</table>
</center>
</div>
<?php } ?>

@ -256,7 +256,7 @@ if (api_get_setting('profile', 'language') !== 'true') {
// EXTENDED PROFILE this make the page very slow!
if (api_get_setting('extended_profile') == 'true') {
if ($_GET['type'] == 'extended') {
if (!isset($_GET['type']) || (isset($_GET['type']) && $_GET['type'] == 'extended')) {
//$form->addElement('html', '<a href="javascript: void(0);" onclick="javascript: show_extend();"> show_extend_profile</a>');
$form->addElement('static', null, '<em>'.get_lang('OptionalTextFields').'</em>');
// MY COMPETENCES
@ -823,10 +823,10 @@ if (api_get_setting('allow_social_tool') == 'true') {
echo '<div id="social-content-online">';
if (api_get_setting('extended_profile') == 'true') {
$show = isset($_GET['show']) ? '&amp;show='.Security::remove_XSS($_GET['show']) : '';
if (isset($_GET['type']) && $_GET['type'] == 'extended') {
echo '<a href="profile.php?type=reduced'.$show.'"><span class="social-menu-text1">'.Display::return_icon('edit.gif', get_lang('EditNormalProfile')).'&nbsp;'.get_lang('EditNormalProfile').'</span></a>';
if (isset($_GET['type']) && $_GET['type'] == 'reduced') {
echo '<a href="profile.php?type=extended '.$show.'"><span class="social-menu-text1">'.Display::return_icon('edit.gif', get_lang('EditExtendProfile')).'&nbsp;'.get_lang('EditExtendProfile').'</span></a>';
} else {
echo '<a href="profile.php?type=extended'.$show.'"><span class="social-menu-text1">'.Display::return_icon('edit.gif', get_lang('EditExtendProfile')).'&nbsp;'.get_lang('EditExtendProfile').'</span></a>';
echo '<a href="profile.php?type=reduced'.$show.'"><span class="social-menu-text1">'.Display::return_icon('edit.gif', get_lang('EditNormalProfile')).'&nbsp;'.get_lang('EditNormalProfile').'</span></a>';
}
}
echo '</div>';

@ -55,13 +55,6 @@ function build_directory_selector($folders, $curdirpath, $group_dir = '', $chang
foreach ($folders as & $folder) {
$selected = ($curdirpath == $folder) ? ' selected="selected"' : '';
$path_parts = explode('/', $folder);
if ($folder_titles[$folder] == 'shared_folder') {
$folder_titles[$folder] = get_lang('SharedFolder');
} elseif (strstr($folder_titles[$folder], 'sf_user_')) {
$userinfo = Database::get_user_info_from_id(substr($folder_titles[$folder], 8));
$folder_titles[$folder] = api_get_person_name($userinfo['firstname'], $userinfo['lastname']);
}
$folder_titles[$folder] = cut($folder_titles[$folder], 80);
$label = str_repeat('&nbsp;&nbsp;&nbsp;', count($path_parts) - 2).' &mdash; '.$folder_titles[$folder];
$parent_select -> addOption($label, $folder);
@ -149,25 +142,26 @@ function create_document_link($www, $title, $path, $filetype, $size, $visibility
//$tooltip_title = str_replace('?cidReq='.$_GET['cidReq'], '', basename($path));
$tooltip_title = explode('?', basename($path));
$tooltip_title = $tooltip_title[0];
$tooltip_title_alt = $tooltip_title;
if ($tooltip_title == 'shared_folder') {
$tooltip_title_alt = get_lang('SharedFolder');
} elseif(strstr($tooltip_title, 'sf_user_')) {
}elseif(strstr($tooltip_title, 'shared_folder_session_')) {
$tooltip_title_alt = get_lang('SharedFolder').' ('.api_get_session_name($current_session_id).')';
}elseif(strstr($tooltip_title, 'sf_user_')) {
$userinfo = Database::get_user_info_from_id(substr($tooltip_title, 8));
$tooltip_title_alt = api_get_person_name($userinfo['firstname'], $userinfo['lastname']);
} else {
$tooltip_title_alt = $tooltip_title;
$tooltip_title_alt = get_lang('SharedFolder').' ('.api_get_person_name($userinfo['firstname'], $userinfo['lastname']).')';
}
if (!$show_as_icon) {
if ($filetype == 'folder') {
if (api_is_allowed_to_edit() || api_is_platform_admin() || api_get_setting('students_download_folders') == 'true') {
//filter when I am into shared folder, I can show for donwload only my shared folder
if(is_shared_folder($_GET['curdirpath']))
{
$my_preg_folder="/shared_folder\/sf_user_".api_get_user_id()."$/";
if (preg_match($my_preg_folder, urldecode($forcedownload_link))|| api_is_allowed_to_edit() || api_is_platform_admin())
$current_session_id=api_get_session_id();
if(is_shared_folder($_GET['curdirpath'],$current_session_id))
{
if (preg_match('/shared_folder\/sf_user_'.api_get_user_id().'$/', urldecode($forcedownload_link))|| preg_match('/shared_folder_session_'.$current_session_id.'\/sf_user_'.api_get_user_id().'$/', urldecode($forcedownload_link)) || api_is_allowed_to_edit() || api_is_platform_admin())
{
$force_download_html = ($size == 0) ? '' : '<a href="'.$forcedownload_link.'" style="float:right"'.$prevent_multiple_click.'>'.Display::return_icon($forcedownload_icon, get_lang('Download'), array('height'=>'16', 'width' => '16')).'</a>';
}
@ -182,7 +176,13 @@ function create_document_link($www, $title, $path, $filetype, $size, $visibility
}
return '<a href="'.$url.'" title="'.$tooltip_title_alt.'" target="'.$target.'"'.$visibility_class.' style="float:left">'.$title.'</a>'.$force_download_html;
} else {
if(preg_match('/shared_folder/', urldecode($url)) && preg_match('/shared_folder$/', urldecode($url))==false){
return '<a href="'.$url.'" title="'.$tooltip_title_alt.'" target="'.$target.'"'.$visibility_class.' style="float:left">'.Display::return_icon('shared.png', get_lang('ResourceShared'), array('hspace' => '5', 'align' => 'middle', 'height' => 22, 'width' => 22)).build_document_icon_tag($filetype, $tooltip_title).'</a>';
}
else
{
return '<a href="'.$url.'" title="'.$tooltip_title_alt.'" target="'.$target.'"'.$visibility_class.' style="float:left">'.build_document_icon_tag($filetype, $tooltip_title).'</a>';
}
}
}
@ -208,7 +208,14 @@ function build_document_icon_tag($type, $path) {
} else {
$basename = get_lang('SharedFolder');
}
} elseif(strstr($basename, 'sf_user_')) {
}elseif(strstr($basename, 'shared_folder_session_')) {
if ($is_allowed_to_edit) {
$basename = '***('.api_get_session_name($current_session_id).')*** '.get_lang('HelpSharedFolder');
} else {
$basename = get_lang('SharedFolder').' ('.api_get_session_name($current_session_id).')';
}
$icon = 'shared_folder.gif';
}elseif(strstr($basename, 'sf_user_')) {
$userinfo = Database::get_user_info_from_id(substr($basename, 8));
$image_path = UserManager::get_user_picture_path_by_id(substr($basename, 8), 'web', false, true);
@ -217,7 +224,9 @@ function build_document_icon_tag($type, $path) {
} else {
$icon = '../upload/users/'.substr($basename, 8).'/'.$image_path['file'];
}
$basename = api_get_person_name($userinfo['firstname'], $userinfo['lastname']);
$basename = get_lang('SharedFolder').' ('.api_get_person_name($userinfo['firstname'], $userinfo['lastname']).')';
} else {
if (($basename =='audio' || $basename =='flash' || $basename =='images' || $basename =='video') && api_is_allowed_to_edit()) {
$basename = get_lang('HelpDefaultDirDocuments');
@ -484,24 +493,52 @@ function create_dir_form() {
/**
* Checks whether the user is in shared folder
* @return return bool Return true when user is in shared folder
* @return return bool Return true when user is into shared folder
*/
function is_shared_folder($curdirpath) {
return Security::remove_XSS($curdirpath) == '/shared_folder';
function is_shared_folder($curdirpath, $current_session_id) {
$clean_curdirpath = Security::remove_XSS($curdirpath);
if($clean_curdirpath== '/shared_folder'){
return true;
}
elseif($clean_curdirpath== '/shared_folder_session_'.$current_session_id){
return true;
}
else{
return false;
}
}
/**
* Checks whether the user is in any user shared folder
* Checks whether the user is into any user shared folder
* @return return bool Return true when user is in any user shared folder
*/
function is_any_user_shared_folder($path) {
return preg_match('/shared_folder\/sf_user_/', Security::remove_XSS($path));
function is_any_user_shared_folder($path, $current_session_id) {
$clean_path = Security::remove_XSS($path);
if(strpos($clean_path,'shared_folder/sf_user_')){
return true;
}
elseif(strpos($clean_path, 'shared_folder_session_'.$current_session_id.'/sf_user_')){
return true;
}
else{
return false;
}
}
/**
* Checks whether the user is in his/her shared folder
* Checks whether the user is into his shared folder
* @return return bool Return true when user is in his user shared folder
*/
function is_my_shared_folder($user_id, $path) {
return Security::remove_XSS($path) == '/shared_folder/sf_user_'.$user_id;
}
function is_my_shared_folder($user_id, $path, $current_session_id) {
$clean_path = Security::remove_XSS($path);
if($clean_path == '/shared_folder/sf_user_'.$user_id){
return true;
}
elseif($clean_path == '/shared_folder_session_'.$current_session_id.'/sf_user_'.$user_id){
return true;
}
else{
return false;
}
}
?>

@ -222,24 +222,46 @@ $course_quota = DocumentManager::get_course_quota();
$current_session_id = api_get_session_id();
/* Create shared folder */
/* Create shared folders */
if (!file_exists($base_work_dir.'/shared_folder')) {
$usf_dir_title = get_lang('SharedFolder');
$usf_dir_name = '/shared_folder';
$to_group_id = 0;
$visibility = 0;
create_unexisting_directory($_course, $_user['user_id'], $to_group_id, $to_user_id, $base_work_dir, $usf_dir_name, $usf_dir_title, $visibility);
if($current_session_id==0){
//Create shared folder. Necessary for courses recycled. Allways session_id should be zero. Allway should be created from a base course, never from a session.
if (!file_exists($base_work_dir.'/shared_folder')) {
$usf_dir_title = get_lang('SharedFolder');
$usf_dir_name = '/shared_folder';
$to_group_id = 0;
$visibility = 0;
create_unexisting_directory($_course, $_user['user_id'], $to_group_id, $to_user_id, $base_work_dir, $usf_dir_name, $usf_dir_title, $visibility);
}
// Create dynamic user shared folder
if (!file_exists($base_work_dir.'/shared_folder/sf_user_'.api_get_user_id())) {
$usf_dir_title = api_get_person_name($_user['firstName'], $_user['lastName']);
$usf_dir_name = '/shared_folder/sf_user_'.api_get_user_id();
$to_group_id = 0;
$visibility = 1;
create_unexisting_directory($_course, $_user['user_id'], $to_group_id, $to_user_id, $base_work_dir, $usf_dir_name, $usf_dir_title, $visibility);
}
}
if (!file_exists($base_work_dir.'/shared_folder/sf_user_'.api_get_user_id())) {
$usf_dir_title = api_get_person_name($_user['firstName'], $_user['lastName']);
$usf_dir_name = '/shared_folder/sf_user_'.api_get_user_id();
$to_group_id = 0;
$visibility = 0;
create_unexisting_directory($_course, $_user['user_id'], $to_group_id, $to_user_id, $base_work_dir, $usf_dir_name, $usf_dir_title, $visibility);
else{
//Create shared folder session
if (!file_exists($base_work_dir.'/shared_folder_session_'.$current_session_id)) {
$usf_dir_title = get_lang('SharedFolder').' ('.api_get_session_name($current_session_id).')';
$usf_dir_name = '/shared_folder_session_'.$current_session_id;
$to_group_id = 0;
$visibility = 0;
create_unexisting_directory($_course, $_user['user_id'], $to_group_id, $to_user_id, $base_work_dir, $usf_dir_name, $usf_dir_title, $visibility);
}
//Create dynamic user shared folder into a shared folder session
if (!file_exists($base_work_dir.'/shared_folder_session_'.$current_session_id.'/sf_user_'.api_get_user_id())) {
$usf_dir_title = api_get_person_name($_user['firstName'], $_user['lastName']).' ('.api_get_session_name($current_session_id).')';
$usf_dir_name = '/shared_folder_session_'.$current_session_id.'/sf_user_'.api_get_user_id();
$to_group_id = 0;
$visibility = 1;
create_unexisting_directory($_course, $_user['user_id'], $to_group_id, $to_user_id, $base_work_dir, $usf_dir_name, $usf_dir_title, $visibility);
}
}
/* MAIN SECTION */
if (isset($_GET['action']) && $_GET['action'] == 'download') {
@ -277,13 +299,13 @@ if (isset($_GET['action']) && $_GET['action'] == 'download') {
// Download a folder
if (isset($_GET['action']) && $_GET['action'] == 'downloadfolder' && $curdirpath!='/' && (api_get_setting('students_download_folders') == 'true' || api_is_allowed_to_edit() || api_is_platform_admin())) {
if (isset($_GET['action']) && $_GET['action'] == 'downloadfolder' && (api_get_setting('students_download_folders') == 'true' || api_is_allowed_to_edit() || api_is_platform_admin())) {
//filter when I am into shared folder, I can donwload only my shared folder
if(is_any_user_shared_folder($_GET['path']))
if(is_any_user_shared_folder($_GET['path'],$current_session_id))
{
if(is_my_shared_folder($_user['user_id'], $_GET['path']) || api_is_allowed_to_edit() || api_is_platform_admin())
if(is_my_shared_folder($_user['user_id'], $_GET['path'], $current_session_id) || api_is_allowed_to_edit() || api_is_platform_admin())
{
require 'downloadfolder.inc.php';
}
@ -323,12 +345,7 @@ if (!$is_certificate_mode) {
$dir_acum = '';
for ($i = 0; $i < $array_len; $i++) {
if ($dir_array[$i] == 'shared_folder') {
$dir_array[$i] = get_lang('SharedFolder');
} elseif (strpos($dir_array[$i], 'sf_user_') !== false) {
$userinfo = Database::get_user_info_from_id(substr($dir_array[$i], 8));
$dir_array[$i] = api_get_person_name($userinfo['firstname'], $userinfo['lastname']);
}
$url_dir = 'document.php?&curdirpath='.$dir_acum.$dir_array[$i];
@ -655,9 +672,11 @@ if ($is_certificate_mode && $curdirpath != '/certificates') {
}
if (isset($docs_and_folders) && is_array($docs_and_folders)) {
//echo('<pre>');
//print_r($docs_and_folders);
//echo('</pre>');
// Do we need the title field for the document name or not?
// We get the setting here, so we only have to do it once
$use_document_title = api_get_setting('use_document_title');
@ -676,15 +695,7 @@ if (isset($docs_and_folders) && is_array($docs_and_folders)) {
if ($use_document_title == 'true' && $id['title'] != '') {
$document_name = $id['title'];
} else {
$document_name = basename($id['path']);
// Juan Carlos Raña: Get firstname and lastname when folder is in shared_folder.
// TODO: Check if is also necessary (above else)
if (strstr($document_name, 'sf_user_')) {
$userinfo = Database::get_user_info_from_id(substr($document_name, 8));
$document_name = api_get_person_name($userinfo['firstname'], $userinfo['lastname']);
} elseif (strpos($document_name, 'shared_folder') !== false) {
$document_name = get_lang('SharedFolder');
}
$document_name = basename($id['path']);
}
// Data for checkbox
if (($is_allowed_to_edit || $group_member_with_upload_rights) && count($docs_and_folders) > 1) {
@ -746,13 +757,13 @@ if (isset($docs_and_folders) && is_array($docs_and_folders)) {
$column_show = array();
if ($is_allowed_to_edit || $group_member_with_upload_rights || is_my_shared_folder($_user['user_id'], $curdirpath)) {
if ($is_allowed_to_edit || $group_member_with_upload_rights || is_my_shared_folder($_user['user_id'], $curdirpath, $current_session_id)) {
// @TODO:check enable more options for shared folders
// TODO:check enable more options for shared folders
/* CREATE NEW DOCUMENT OR NEW DIRECTORY / GO TO UPLOAD / DOWNLOAD ZIPPED FOLDER */
// Create new document
if (!$is_certificate_mode && !is_my_shared_folder($_user['user_id'], $curdirpath)) {
if (!$is_certificate_mode && !is_my_shared_folder($_user['user_id'], $curdirpath, $current_session_id)) {
?>
<a href="create_document.php?<?php echo api_get_cidreq(); ?>&dir=<?php echo $curdirpathurl.$req_gid; ?>">
<?php Display::display_icon('filenew.gif', get_lang('CreateDoc')); echo get_lang('CreateDoc'); ?></a>&nbsp;
@ -775,7 +786,7 @@ if ($is_allowed_to_edit || $group_member_with_upload_rights || is_my_shared_fold
<?php
// Create directory
if (!$is_certificate_mode && !is_my_shared_folder($_user['user_id'], $curdirpath)) {
if (!$is_certificate_mode && !is_my_shared_folder($_user['user_id'], $curdirpath, $current_session_id)) {
?>
<a href="<?php echo api_get_self(); ?>?<?php echo api_get_cidreq(); ?>&curdirpath=<?php echo $curdirpathurl.$req_gid; ?>&amp;createdir=1">
<?php Display::display_icon('folder_new.gif', get_lang('CreateDir')); echo get_lang('CreateDir'); ?></a>&nbsp;
@ -792,7 +803,7 @@ if (!is_null($docs_and_folders)) {
if (!$is_certificate_mode && $total_size != 0 && (api_get_setting('students_download_folders') == 'true' || api_is_allowed_to_edit() || api_is_platform_admin())) {
//don't show icon into shared folder, and don´t show into main path (root)
if (!is_shared_folder($curdirpath) && $curdirpath!='/' || api_is_allowed_to_edit() || api_is_platform_admin())
if (!is_shared_folder($curdirpath, $current_session_id) && $curdirpath!='/' || api_is_allowed_to_edit() || api_is_platform_admin())
{
echo '<a href="'.api_get_self().'?'.api_get_cidreq().'&action=downloadfolder&path='.$curdirpathurl.'">'.Display::display_icon('zip_save.gif', get_lang('Save').' (ZIP)'). get_lang('Save').' (ZIP)</a>&nbsp';
}
@ -878,4 +889,5 @@ if (!empty($table_footer)) {
}
// Footer
Display::display_footer();
Display::display_footer()
?>

@ -21,6 +21,14 @@ if (($path != '/') && (!DocumentManager::get_document_id($_course, $path))) {
$path = '/';
}
//a student should not be able to download a root shared directory
if (($path == '/shared_folder' || $path=='/shared_folder_session_'.api_get_session_id()) && (!api_is_allowed_to_edit() || !api_is_platform_admin())){
echo '<div align="center">';
Display::display_error_message(get_lang('NotAllowedClickBack').'<br /><br /><a href="'.$_SERVER['HTTP_REFERER'].'">'.get_lang('BackToPreviousPage').'</a><br />', false);
echo '</div>';
exit;
}
//zip library for creation of the zipfile
include api_get_path(LIBRARY_PATH).'pclzip/pclzip.lib.php';

@ -198,7 +198,7 @@ if (isset($_SESSION['_gid']) && $_SESSION['_gid'] != '') { // If the group id is
} else {
api_not_allowed(true);
}
} elseif ($is_allowed_to_edit || is_my_shared_folder($_user['user_id'], $path)) { // Admin for "regular" upload, no group documents. And check if is my shared folder
} elseif ($is_allowed_to_edit || is_my_shared_folder($_user['user_id'], $path,api_get_session_id())) { // Admin for "regular" upload, no group documents. And check if is my shared folder
$to_group_id = 0;
$req_gid = '';
} else { // No course admin and no group member...
@ -488,7 +488,7 @@ if ($is_certificate_mode) {
}
// Link to create a folder
if (!isset($_GET['createdir']) && !is_my_shared_folder($_user['user_id'], $path) && !$is_certificate_mode) {
if (!isset($_GET['createdir']) && !is_my_shared_folder($_user['user_id'], $path, api_get_session_id()) && !$is_certificate_mode) {
echo '<a href="'.api_get_self().'?path='.$path.'&amp;createdir=1">'.Display::return_icon('folder_new.gif', get_lang('CreateDir')).get_lang('CreateDir').'</a>';
}
echo '</div>';

@ -428,12 +428,10 @@ if (isset($exerciseId) && !empty($exerciseId)) {
echo '<div class="actions">';
if (isset($_GET['hotspotadmin']) || isset($_GET['newQuestion']) || isset($_GET['myid']))
echo Display::return_icon('back.png', get_lang('GoBackToQuestionList')).' '.'<a href="admin.php?">'.get_lang('GoBackToQuestionList').'</a>';
echo Display::return_icon('preview.gif', get_lang('Preview')).'<a href="exercice_submit.php?'.api_get_cidreq().'&exerciseId='.$objExercise->id.'">'.get_lang('Preview').'</a>';
echo Display::return_icon('edit.gif', get_lang('ModifyExercise')).'<a href="exercise_admin.php?'.api_get_cidreq().'&modifyExercise=yes&exerciseId='.$objExercise->id.'">'.get_lang('ModifyExercise').'</a>';
if (isset($_GET['hotspotadmin']) || isset($_GET['newQuestion']) || isset($_GET['myid']))
echo Display::return_icon('message_reply_forum.png', get_lang('GoBackToQuestionList')).' '.'<a href="admin.php?">'.get_lang('GoBackToQuestionList').'</a><br/>';
echo '</div>';
if(isset($_GET['message']))

@ -732,6 +732,54 @@ if ($show == 'test') {
echo '</span>';
}
if (($is_allowedToEdit) and ($origin != 'learnpath')) {
if ($_GET['show'] != 'result') {
echo '<a href="exercise_admin.php?' . api_get_cidreq() . '">' . Display :: return_icon('new_test.gif', get_lang('NewEx')) . get_lang('NewEx') . '</a>';
echo '<a href="question_create.php?' . api_get_cidreq() . '">' . Display :: return_icon('question_add.gif', get_lang('AddQuestionToExercise')) . get_lang('AddQuestionToExercise') . '</a>';
echo '<a href="hotpotatoes.php?' . api_get_cidreq() . '">' . Display :: return_icon('import_db.png', get_lang('ImportHotPotatoesQuiz')) . get_lang('ImportHotPotatoesQuiz') . '</a>';
// link to import qti2 ...
echo '<a href="qti2.php?' . api_get_cidreq() . '">' . Display :: return_icon('import_db.png', get_lang('ImportQtiQuiz')) . get_lang('ImportQtiQuiz') . '</a>';
echo '<a href="exercice.php?' . api_get_cidreq() . '&show=result">' . Display :: return_icon('show_test_results.gif', get_lang('Results')) . get_lang('Results') . '</a>';
}
// the actions for the statistics
if ($show == 'result') {
// the form
if (api_is_platform_admin() || api_is_course_admin() || api_is_course_tutor() || api_is_course_coach()) {
if ($_SESSION['export_user_fields'] == true) {
$alt = get_lang('ExportWithUserFields');
$extra_user_fields = '<input type="hidden" name="export_user_fields" value="export_user_fields">';
} else {
$alt = get_lang('ExportWithoutUserFields');
$extra_user_fields = '<input type="hidden" name="export_user_fields" value="do_not_export_user_fields">';
}
echo '<a href="' . api_add_url_param($_SERVER['REQUEST_URI'], 'show=test') . '">' . Display :: return_icon('back.png', get_lang('GoBackToQuestionList')) . get_lang('GoBackToQuestionList') . '</a>';
echo '<a href="javascript: void(0);" onclick="javascript: document.form1a.submit();">'.Display::return_icon('csv.gif',get_lang('ExportAsCSV')).get_lang('ExportAsCSV').'</a>';
echo '<a href="javascript: void(0);" onclick="javascript: document.form1b.submit();">' . Display :: return_icon('excel.gif', get_lang('ExportAsXLS')) . get_lang('ExportAsXLS') . '</a>';
//echo '<a href="javascript: void(0);" onclick="javascript: document.form1c.submit();">'.Display::return_icon('synthese_view.gif',$alt).$alt.'</a>';
echo '<form id="form1a" name="form1a" method="post" action="' . api_get_self() . '?show=' . Security :: remove_XSS($_GET['show']) . '" style="display:inline">';
echo '<input type="hidden" name="export_report" value="export_report">';
echo '<input type="hidden" name="export_format" value="csv">';
echo '<input type="hidden" name="export_filter" value="'.(empty($filter)?1:intval($filter)).'">';
echo '</form>';
echo '<form id="form1b" name="form1b" method="post" action="' . api_get_self() . '?show=' . Security :: remove_XSS($_GET['show']) . '" style="display:inline">';
echo '<input type="hidden" name="export_report" value="export_report">';
echo '<input type="hidden" name="export_filter" value="'.(empty($filter)?1:intval($filter)).'">';
echo '<input type="hidden" name="export_format" value="xls">';
echo '</form>';
//echo '<form id="form1c" name="form1c" method="post" action="'.api_get_self().'?show='.Security::remove_XSS($_GET['show']).'">';
//echo $extra_user_fields;
//echo '</form>';
}
}
} else {
//the student view
if ($show == 'result') {
echo '<a href="' . api_add_url_param($_SERVER['REQUEST_URI'], 'show=test') . '">' . Display :: return_icon('back.png', get_lang('GoBackToQuestionList')) . get_lang('GoBackToQuestionList') . '</a>';
} else {
echo '<a href="' . api_add_url_param($_SERVER['REQUEST_URI'], 'show=result') . '">' . Display :: return_icon('show_test_results.gif', get_lang('Results')) . get_lang('Results') . '</a>';
}
}
if ($_configuration['tracking_enabled']) {
if ($show == 'result') {
/*if (!function_exists('make_select'))
@ -809,56 +857,6 @@ if ($_configuration['tracking_enabled']) {
}
} */
}
if (($is_allowedToEdit) and ($origin != 'learnpath')) {
if ($_GET['show'] != 'result') {
echo '<a href="exercise_admin.php?' . api_get_cidreq() . '">' . Display :: return_icon('new_test.gif', get_lang('NewEx')) . get_lang('NewEx') . '</a>';
echo '<a href="question_create.php?' . api_get_cidreq() . '">' . Display :: return_icon('question_add.gif', get_lang('AddQuestionToExercise')) . get_lang('AddQuestionToExercise') . '</a>';
echo '<a href="hotpotatoes.php?' . api_get_cidreq() . '">' . Display :: return_icon('jqz.gif', get_lang('ImportHotPotatoesQuiz')) . get_lang('ImportHotPotatoesQuiz') . '</a>';
// link to import qti2 ...
echo '<a href="qti2.php?' . api_get_cidreq() . '">' . Display :: return_icon('jqz.gif', get_lang('ImportQtiQuiz')) . get_lang('ImportQtiQuiz') . '</a>';
echo '<a href="exercice.php?' . api_get_cidreq() . '&show=result">' . Display :: return_icon('show_test_results.gif', get_lang('Results')) . get_lang('Results') . '</a>';
}
// the actions for the statistics
if ($show == 'result') {
// the form
if (api_is_platform_admin() || api_is_course_admin() || api_is_course_tutor() || api_is_course_coach()) {
if ($_SESSION['export_user_fields'] == true) {
$alt = get_lang('ExportWithUserFields');
$extra_user_fields = '<input type="hidden" name="export_user_fields" value="export_user_fields">';
} else {
$alt = get_lang('ExportWithoutUserFields');
$extra_user_fields = '<input type="hidden" name="export_user_fields" value="do_not_export_user_fields">';
}
echo '<a href="javascript: void(0);" onclick="javascript: document.form1a.submit();">'.Display::return_icon('csv.gif',get_lang('ExportAsCSV')).get_lang('ExportAsCSV').'</a>';
echo '<a href="javascript: void(0);" onclick="javascript: document.form1b.submit();">' . Display :: return_icon('excel.gif', get_lang('ExportAsXLS')) . get_lang('ExportAsXLS') . '</a>';
//echo '<a href="javascript: void(0);" onclick="javascript: document.form1c.submit();">'.Display::return_icon('synthese_view.gif',$alt).$alt.'</a>';
echo '<a href="' . api_add_url_param($_SERVER['REQUEST_URI'], 'show=test') . '">' . Display :: return_icon('message_reply_forum.png', get_lang('GoBackToQuestionList')) . get_lang('GoBackToQuestionList') . '</a>';
echo '<form id="form1a" name="form1a" method="post" action="' . api_get_self() . '?show=' . Security :: remove_XSS($_GET['show']) . '">';
echo '<input type="hidden" name="export_report" value="export_report">';
echo '<input type="hidden" name="export_format" value="csv">';
echo '<input type="hidden" name="export_filter" value="'.(empty($filter)?1:intval($filter)).'">';
echo '</form>';
echo '<form id="form1b" name="form1b" method="post" action="' . api_get_self() . '?show=' . Security :: remove_XSS($_GET['show']) . '">';
echo '<input type="hidden" name="export_report" value="export_report">';
echo '<input type="hidden" name="export_filter" value="'.(empty($filter)?1:intval($filter)).'">';
echo '<input type="hidden" name="export_format" value="xls">';
echo '</form>';
//echo '<form id="form1c" name="form1c" method="post" action="'.api_get_self().'?show='.Security::remove_XSS($_GET['show']).'">';
//echo $extra_user_fields;
//echo '</form>';
}
}
} else {
//the student view
if ($show == 'result') {
echo '<a href="' . api_add_url_param($_SERVER['REQUEST_URI'], 'show=test') . '">' . Display :: return_icon('message_reply_forum.png', get_lang('GoBackToQuestionList')) . get_lang('GoBackToQuestionList') . '</a>';
} else {
echo '<a href="' . api_add_url_param($_SERVER['REQUEST_URI'], 'show=result') . '">' . Display :: return_icon('show_test_results.gif', get_lang('Results')) . get_lang('Results') . '</a>';
}
}
echo '</div>'; // closing the actions div
if ($show == 'test') {
@ -996,7 +994,7 @@ if ($show == 'test') {
}
// Export qti ...
echo '<a href="exercice.php?choice=exportqti2&exerciseId='.$row['id'].'"><img src="../img/export.png" border="0" title="IMS/QTI" /></a>';
echo '<a href="exercice.php?choice=exportqti2&exerciseId='.$row['id'].'"><img src="../img/export_db.png" border="0" title="IMS/QTI" /></a>';
echo "</td>";
echo "</tr>";
@ -1111,7 +1109,7 @@ if ($show == 'test') {
?>
<tr>
<td><img src="../img/jqz.gif" alt="HotPotatoes" /></td>
<td><img src="../img/import_db.png" alt="HotPotatoes" /></td>
<td><?php echo ($ind+($page*$limitExPage)).'.'; ?></td>
<td><a href="showinframes.php?file=<?php echo $path?>&cid=<?php echo $_course['official_code'];?>&uid=<?php echo $_user['user_id'];?>" <?php if(!$active) echo 'class="invisible"'; ?>><?php echo $title?></a></td>
<td></td>

@ -1076,7 +1076,7 @@ if (isset($exerciseId) && !empty($exerciseId)) {
// I'm in a preview mode
if (api_is_course_admin() && $origin != 'learnpath') {
echo '<div class="actions">';
echo '<a href="exercice.php?show=test">' . Display :: return_icon('message_reply_forum.png', get_lang('GoBackToQuestionList')) . get_lang('GoBackToQuestionList') . '</a>';
echo '<a href="exercice.php?show=test">' . Display :: return_icon('back.png', get_lang('GoBackToQuestionList')) . get_lang('GoBackToQuestionList') . '</a>';
if ($show_quiz_edition) {
echo Display :: return_icon('edit.gif', get_lang('ModifyExercise')) . '<a href="exercise_admin.php?' . api_get_cidreq() . '&modifyExercise=yes&exerciseId=' . $objExercise->id . '">' . get_lang('ModifyExercise') . '</a>';
} else {

@ -184,7 +184,7 @@ if ($form -> validate()) {
Display::display_header($nameTools,get_lang('Exercise'));
echo '<div class="actions">';
echo '<a href="exercice.php?show=test">' . Display :: return_icon('message_reply_forum.png', get_lang('GoBackToQuestionList')) . get_lang('GoBackToQuestionList') . '</a>';
echo '<a href="exercice.php?show=test">' . Display :: return_icon('back.png', get_lang('GoBackToQuestionList')) . get_lang('GoBackToQuestionList') . '</a>';
echo '</div>';
if ($objExercise->feedbacktype==1)

@ -206,7 +206,7 @@ if((api_is_allowed_to_edit(null,true)) && (($finish == 0) || ($finish == 2)))
Display::display_header($nameTools,get_lang('Exercise'));
echo '<div class="actions">';
echo '<a href="exercice.php?show=test">' . Display :: return_icon('message_reply_forum.png', get_lang('GoBackToQuestionList')) . get_lang('GoBackToQuestionList') . '</a>';
echo '<a href="exercice.php?show=test">' . Display :: return_icon('back.png', get_lang('GoBackToQuestionList')) . get_lang('GoBackToQuestionList') . '</a>';
echo '</div>';
if ($finish==2) //if we are in the img upload process

@ -37,7 +37,7 @@ $is_allowedToEdit = api_is_allowed_to_edit(null, true);
function ch_qti2_display_form() {
$name_tools = get_lang('ImportQtiQuiz');
$form = '<div class="actions">';
$form .= '<a href="exercice.php?show=test">' . Display :: return_icon('message_reply_forum.png', get_lang('GoBackToQuestionList')) . get_lang('GoBackToQuestionList') . '</a>';
$form .= '<a href="exercice.php?show=test">' . Display :: return_icon('back.png', get_lang('GoBackToQuestionList')) . get_lang('GoBackToQuestionList') . '</a>';
$form .= '</div>';
$form .= '<form action='.api_get_self()."?".api_get_cidreq().' method="post" enctype="multipart/form-data">';
$form .= '<div class="row"><div class="form_header">'.$name_tools.'</div></div>';

@ -87,7 +87,7 @@ if ($form->validate()) {
Display::display_header($nameTools);
echo '<div class="actions">';
echo '<a href="exercice.php?show=test">' . Display :: return_icon('message_reply_forum.png', get_lang('GoBackToQuestionList')) . get_lang('GoBackToQuestionList') . '</a>';
echo '<a href="exercice.php?show=test">' . Display :: return_icon('back.png', get_lang('GoBackToQuestionList')) . get_lang('GoBackToQuestionList') . '</a>';
echo '</div>';
// displaying the form

@ -267,9 +267,9 @@ if($is_allowedToEdit) {
<button class="save" type="submit" name="name" value="<?php echo get_lang('Ok') ?>"><?php echo get_lang('Filter') ?></button>
<?php
echo '<a href="admin.php?',api_get_cidreq(),'&exerciseId=',$fromExercise,'">'.Display::return_icon('message_reply_forum.png', get_lang('GoBackToQuestionList')),get_lang('GoBackToQuestionList'),'</a>';
echo '<a href="admin.php?',api_get_cidreq(),'&exerciseId=',$fromExercise,'">'.Display::return_icon('back.png', get_lang('GoBackToQuestionList')),get_lang('GoBackToQuestionList'),'</a>';
/*if(!empty($fromExercise)) {
echo '<a href="admin.php?',api_get_cidreq(),'&exerciseId=',$fromExercise,'">'.Display::return_icon('message_reply_forum.png', get_lang('GoBackToQuestionList')),get_lang('GoBackToQuestionList'),'</a>';
echo '<a href="admin.php?',api_get_cidreq(),'&exerciseId=',$fromExercise,'">'.Display::return_icon('back.png', get_lang('GoBackToQuestionList')),get_lang('GoBackToQuestionList'),'</a>';
} else {
echo '<a href="admin.php?'.api_get_cidreq().'&newQuestion=yes">'.Display::return_icon('new_test.gif'),get_lang('NewQu').'</a>';
}*/

@ -246,5 +246,9 @@ class AttendanceLink extends AbstractLink
return $this->attendance_data;
}
public function get_icon_name() {
return 'attendance';
}
}
?>

@ -70,4 +70,9 @@ class DropboxLink extends EvalLink
}
return $this->dropbox_table;
}
public function get_icon_name() {
return 'dropbox';
}
}

@ -96,10 +96,10 @@ class ExerciseLink extends AbstractLink
$sql = 'SELECT * FROM '.$tbl_stats.' WHERE exe_exo_id = '.(int)$this->get_ref_id().' AND orig_lp_id = 0 AND orig_lp_item_id = 0';
if (isset($stud_id)){
//$currect_course=api_get_course_id();
//$course_code_exe = (strlen($currect_course)===0) ? $this->get_course_code() : api_get_course_id();
$course_code_exe = $this->get_course_code();
//$currect_course=api_get_course_id();
//$course_code_exe = (strlen($currect_course)===0) ? $this->get_course_code() : api_get_course_id();
$course_code_exe = $this->get_course_code();
$sql .= ' AND exe_cours_id="'.$course_code_exe.'" AND exe_user_id = '."'".$stud_id."'";
}
@ -241,4 +241,9 @@ class ExerciseLink extends AbstractLink
}
return $this->exercise_data;
}
public function get_icon_name() {
return 'exercise';
}
}

@ -253,4 +253,8 @@ class ForumThreadLink extends AbstractLink
return $this->exercise_data;
}
public function get_icon_name() {
return 'forum';
}
}

@ -255,4 +255,9 @@ class LearnpathLink extends AbstractLink
}
return $this->learnpath_data;
}
public function get_icon_name() {
return 'learnpath';
}
}

@ -269,4 +269,9 @@ class StudentPublicationLink extends AbstractLink
$number=Database::fetch_row($result);
return ($number[0] != 0);
}
public function get_icon_name() {
return 'studentpublication';
}
}

@ -34,7 +34,7 @@ function add_resource_to_course_gradebook($course_code, $resource_type, $resourc
define('LINK_WORK',6);
*/
$category = 0;
require_once (api_get_path(SYS_CODE_PATH).'gradebook/lib/be.inc.php');
require_once api_get_path(SYS_CODE_PATH).'gradebook/lib/be.inc.php';
$link= LinkFactory :: create($resource_type);
$link->set_user_id(api_get_user_id());
$link->set_course_code($course_code);
@ -139,21 +139,48 @@ function build_type_icon_tag($kind) {
* @param string $type value returned by a gradebookitem's get_icon_name()
*/
function get_icon_file_name ($type) {
if ($type == 'cat') {
return api_get_path(WEB_CODE_PATH) . 'img/gradebook.gif';
} elseif ($type == 'evalempty') {
return api_get_path(WEB_CODE_PATH) . 'img/empty.gif';
} elseif ($type == 'evalnotempty') {
return api_get_path(WEB_CODE_PATH) . 'img/gradebook_eval_not_empty.gif';
} elseif ($type == 'link') {
return api_get_path(WEB_CODE_PATH) . 'img/link.gif';
} else {
return null;
switch ($type) {
case 'cat':
$icon = 'gradebook.gif';
break;
case 'evalempty':
$icon = 'empty.gif';
break;
case 'evalnotempty':
$icon = 'gradebook_eval_not_empty.gif';
break;
case 'exercise':
$icon = 'quiz.gif';
break;
case 'learnpath':
$icon = 'scorm.gif';
break;
case 'studentpublication':
$icon = 'works.gif';
break;
case 'link':
$icon = 'link.gif';
break;
case 'forum':
$icon = 'forum.gif';
break;
case 'attendance':
$icon = 'attendance.gif';
break;
case 'survey':
$icon = 'survey.gif';
break;
case 'dropbox':
$icon = 'dropbox.gif';
break;
default:
$icon = 'link.gif';
break;
}
return api_get_path(WEB_IMG_PATH).$icon;
}
/**
* Builds the course or platform admin icons to edit a category
* @param object $cat category object
@ -239,7 +266,7 @@ function is_resource_in_course_gradebook($course_code, $resource_type, $resource
require_once api_get_path(SYS_CODE_PATH).'gradebook/lib/be/linkfactory.class.php';
require_once api_get_path(SYS_CODE_PATH).'gradebook/lib/be.inc.php';
require_once api_get_path(SYS_CODE_PATH).'gradebook/lib/be/linkfactory.class.php';
// TODO find the corresponding category (the first one for this course, ordered by ID)
$t = Database::get_main_table(TABLE_MAIN_GRADEBOOK_CATEGORY);
$l = Database::get_main_table(TABLE_MAIN_GRADEBOOK_LINK);
@ -305,7 +332,7 @@ function get_printable_data($users,$alleval, $alllinks) {
$count = (($offset + 10) > $datagen->get_total_items_count()) ? ($datagen->get_total_items_count() - $offset) : 10;
$header_names = $datagen->get_header_names($offset, $count, true);
$data_array = $datagen->get_data(FlatViewDataGenerator :: FVDG_SORT_LASTNAME, 0, null, $offset, $count, true,true);
$newarray = array();
foreach ($data_array as $data) {
$newarray[] = array_slice($data, 1);
@ -317,7 +344,7 @@ function get_printable_data($users,$alleval, $alllinks) {
/**
* XML-parser: handle character data
*/
function character_data($parser, $data) {
global $current_value;
$current_value= $data;
@ -326,7 +353,7 @@ function character_data($parser, $data) {
/**
* XML-parser: handle end of element
*/
function element_end($parser, $data) {
global $user;
global $users;
@ -344,7 +371,7 @@ function element_end($parser, $data) {
/**
* XML-parser: handle start of element
*/
function element_start($parser, $data) {
global $user;
global $current_tag;
@ -373,7 +400,7 @@ function overwritescore($resid, $importscore, $eval_max) {
* @param string $file Path to the XML-file
* @return array All userinformation read from the file
*/
function parse_xml_data($file) {
global $current_tag;
global $current_value;
@ -393,44 +420,44 @@ function parse_xml_data($file) {
* @param int The category id
* @param int The user id
* @param string the path name of the certificate
* @return void()
* @return void()
*/
function update_user_info_about_certificate ($cat_id,$user_id,$path_certificate) {
$table_certificate = Database::get_main_table(TABLE_MAIN_GRADEBOOK_CERTIFICATE);
if (!UserManager::is_user_certified($cat_id,$user_id)) {
$sql='UPDATE '.$table_certificate.' SET path_certificate="'.Database::escape_string($path_certificate).'"
$sql='UPDATE '.$table_certificate.' SET path_certificate="'.Database::escape_string($path_certificate).'"
WHERE cat_id="'.intval($cat_id).'" AND user_id="'.intval($user_id).'" ';
$rs=Database::query($sql);
}
}
/**
* register user info about certificate
* @param int The category id
* @param int The user id
* @param float The score obtained for certified
* @param Datetime The date when you obtained the certificate
* @return void()
* @param Datetime The date when you obtained the certificate
* @return void()
*/
function register_user_info_about_certificate ($cat_id,$user_id,$score_certificate, $date_certificate) {
$table_certificate = Database::get_main_table(TABLE_MAIN_GRADEBOOK_CERTIFICATE);
$sql_exist='SELECT COUNT(*) as count FROM '.$table_certificate.' gc
$sql_exist='SELECT COUNT(*) as count FROM '.$table_certificate.' gc
WHERE gc.cat_id="'.intval($cat_id).'" AND user_id="'.intval($user_id).'" ';
$rs_exist=Database::query($sql_exist);
$row=Database::fetch_array($rs_exist);
if ($row['count']==0) {
$sql='INSERT INTO '.$table_certificate.' (cat_id,user_id,score_certificate,created_at)
VALUES("'.intval($cat_id).'","'.intval($user_id).'","'.Database::escape_string($score_certificate).'","'.Database::escape_string($date_certificate).'")';
$rs=Database::query($sql);
$rs=Database::query($sql);
}
}
/**
* Get date of user certificate
* @param int The category id
* @param int The user id
* @return Datetime The date when you obtained the certificate
*/
* @return Datetime The date when you obtained the certificate
*/
function get_certificate_date_by_user_id ($cat_id,$user_id) {
$table_certificate = Database::get_main_table(TABLE_MAIN_GRADEBOOK_CERTIFICATE);
$sql_get_date='SELECT created_at FROM '.$table_certificate.' WHERE cat_id="'.intval($cat_id).'" AND user_id="'.intval($user_id).'"';
@ -438,21 +465,21 @@ function parse_xml_data($file) {
$row_get_date=Database::fetch_array($rs_get_date,'ASSOC');
return $row_get_date['created_at'];
}
/**
* Get list of users certificates
* @param int The category id
* @return array
*/
function get_list_users_certificates ($cat_id=null) {
$table_certificate = Database::get_main_table(TABLE_MAIN_GRADEBOOK_CERTIFICATE);
$table_certificate = Database::get_main_table(TABLE_MAIN_GRADEBOOK_CERTIFICATE);
$table_user = Database::get_main_table(TABLE_MAIN_USER);
$sql='SELECT DISTINCT u.user_id,u.lastname,u.firstname,u.username FROM '.$table_user.' u INNER JOIN '.$table_certificate.' gc
$sql='SELECT DISTINCT u.user_id,u.lastname,u.firstname,u.username FROM '.$table_user.' u INNER JOIN '.$table_certificate.' gc
ON u.user_id=gc.user_id ';
if (!is_null($cat_id) && $cat_id>0) {
$sql.=' WHERE cat_id='.Database::escape_string($cat_id);
}
$sql.=' ORDER BY u.firstname';
$sql.=' ORDER BY u.firstname';
$rs=Database::query($sql);
$list_users=array();
while ($row=Database::fetch_array($rs)) {
@ -468,8 +495,8 @@ function parse_xml_data($file) {
*@retun array
*/
function get_list_gradebook_certificates_by_user_id ($user_id,$cat_id=null) {
$table_certificate = Database::get_main_table(TABLE_MAIN_GRADEBOOK_CERTIFICATE);
$sql='SELECT gc.score_certificate,gc.created_at,gc.path_certificate,gc.cat_id,gc.user_id FROM '.$table_certificate.' gc
$table_certificate = Database::get_main_table(TABLE_MAIN_GRADEBOOK_CERTIFICATE);
$sql='SELECT gc.score_certificate,gc.created_at,gc.path_certificate,gc.cat_id,gc.user_id FROM '.$table_certificate.' gc
WHERE gc.user_id="'.Database::escape_string($user_id).'" ';
if (!is_null($cat_id) && $cat_id>0) {
$sql.=' AND cat_id='.Database::escape_string($cat_id);
@ -489,8 +516,8 @@ function parse_xml_data($file) {
* @return boolean
*/
function delete_certificate ($cat_id,$user_id) {
$table_certificate = Database::get_main_table(TABLE_MAIN_GRADEBOOK_CERTIFICATE);
$table_certificate = Database::get_main_table(TABLE_MAIN_GRADEBOOK_CERTIFICATE);
$sql_verified='SELECT count(*) AS count,path_certificate as path,user_id FROM '.$table_certificate.' gc WHERE cat_id="'.Database::escape_string($cat_id).'" AND user_id="'.Database::escape_string($user_id).'" GROUP BY user_id,cat_id';
$rs_verified=Database::query($sql_verified);
$path=Database::result($rs_verified,0,'path');

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 205 B

After

Width:  |  Height:  |  Size: 14 KiB

@ -403,6 +403,19 @@ if (isset($interbreadcrumb) && is_array($interbreadcrumb)) {
$sep = (strrchr($breadcrumb_step['url'], '?') ? '&amp;' : '?');
$navigation_item['url'] = $breadcrumb_step['url'].$sep.api_get_cidreq();
$navigation_item['title'] = $breadcrumb_step['name'];
// titles for shared folders
if ($breadcrumb_step['name'] == 'shared_folder') {
$navigation_item['title'] = get_lang('SharedFolder');
}
elseif(strstr($breadcrumb_step['name'], 'shared_folder_session_')) {
$navigation_item['title'] = get_lang('SharedFolder');
}
elseif(strstr($breadcrumb_step['name'], 'sf_user_')) {
$userinfo = Database::get_user_info_from_id(substr($breadcrumb_step['name'], 8));
$navigation_item['title'] = api_get_person_name($userinfo['firstname'], $userinfo['lastname']);
}
$navigation[] = $navigation_item;
}
}

@ -52,10 +52,10 @@ FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
*/
// Modified by Ivan Tcholakov, 02-JUL-2010.
//var AMTcgiloc = "http://www.imathas.com/cgi-bin/mimetex.cgi?"; //path to CGI script that
//var AMTcgiloc = "http://www.imathas.com/cgi-bin/mimetex.cgi"; //path to CGI script that
// //can render a TeX string
//
// You should pick up and install on your server software for TeX rendering as:
// You should pick up and install on your server software for TeX rendering, such as:
//
// mimeTeX - http://www.forkosh.dreamhost.com/source_mimetex.html
// mathTeX - http://www.forkosh.com/mathtex.html
@ -66,27 +66,26 @@ FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
// Google Chart Tools - http://code.google.com/apis/charttools/
//
// You have to set here the path to the script for TeX rendering
// and query parameters, if any.
//
// Examples:
//
// var AMTcgiloc = "/cgi-bin/mimetex.cgi?";
// var AMTcgiloc = "http://my_server.net/cgi-bin/mimetex.cgi?";
// and specific query parameters, if any.
//
// Some examples for testing purposes:
//
//var AMTcgiloc = "http://www.imathas.com/cgi-bin/mimetex.cgi?";
//var AMTcgiloc = "http://schmoodle.alaskapolicy.net/cgi-bin/mimetex.cgi?";
//var AMTcgiloc = "http://www.imathas.com/cgi-bin/mimetex.cgi";
//var AMTcgiloc = "http://schmoodle.alaskapolicy.net/cgi-bin/mimetex.cgi";
//
//var AMTcgiloc = "http://korpelainen.net/cgi-bin/mathtex.cgi?\\gammacorrection{1.4}";
//var AMTcgiloc = "http://www.forkosh.com/cgi-bin/mathtex.cgi?\\gammacorrection{1.4}";
//var AMTcgiloc = "http://korpelainen.net/cgi-bin/mathtex.cgi";
//
//var AMTcgiloc = "http://www.mathtran.org/cgi-bin/mathtran?D=1;tex=\\displaystyle ";
//var AMTcgiloc = "http://www.mathtran.org/cgi-bin/mathtran?D=2;tex=\\displaystyle ";
//var AMTcgiloc = "http://www.mathtran.org/cgi-bin/mathtran?tex=";
//var AMTcgiloc = "http://www.mathtran.org/cgi-bin/mathtran?D=1;tex=";
//var AMTcgiloc = "http://www.mathtran.org/cgi-bin/mathtran?D=2;tex=";
//
//var AMTcgiloc = "http://chart.apis.google.com/chart?cht=tx&chs=1x0&chf=bg,s,FFFFFF00&chco=000000&chl=";
//var AMTcgiloc = "http://chart.apis.google.com/chart?cht=tx&chl=";
//var AMTcgiloc = "http://chart.apis.google.com/chart?cht=tx&chs=1x0&chl=";
//
var AMTcgiloc = "http://chart.apis.google.com/chart?cht=tx&chs=1x0&chf=bg,s,FFFFFF00&chco=000000&chl=";
//var AMTcgiloc = "http://codecogs.izyba.com/gif.latex";
//var AMTcgiloc = "http://codecogs.izyba.com/png.latex";
//
var AMTcgiloc = "http://chart.apis.google.com/chart?cht=tx&chs=1x0&chl=";
//
var AScgiloc = 'http://www.imathas.com/imathas/filter/graph/svgimg.php'; //path to CGI script
@ -94,7 +93,7 @@ var AScgiloc = 'http://www.imathas.com/imathas/filter/graph/svgimg.php'; //path
var mathcolor = "blue"; // change it to "" (to inherit) or another color
// Modified by Ivan Tcholakov, 01-JUL-2010.
//var mathfontsize = "1em"; // change to e.g. 1.2em for larger math
var mathfontsize = "1.5em";
var mathfontsize = "1.2em";
//
// Modified by Ivan Tcholakov, 05-JUL-2010.
//var mathfontfamily = "serif"; // change to "" to inherit (works in IE)
@ -170,9 +169,20 @@ function setStylesheet(s) {
}
}
setStylesheet("#AMMLcloseDiv \{font-size:0.8em; padding-top:1em; color:#014\}\n#AMMLwarningBox \{position:absolute; width:100%; top:0; left:0; z-index:200; text-align:center; font-size:1em; font-weight:bold; padding:0.5em 0 0.5em 0; color:#ffc; background:#c30\}");
// Disabled by Ivan Tcholakov, 11-JUL-2010.
// On Internet Explorer the inserted &nbsp; character breaks visual appearance of the online editor.
//setStylesheet("#AMMLcloseDiv \{font-size:0.8em; padding-top:1em; color:#014\}\n#AMMLwarningBox \{position:absolute; width:100%; top:0; left:0; z-index:200; text-align:center; font-size:1em; font-weight:bold; padding:0.5em 0 0.5em 0; color:#ffc; background:#c30\}");
//
// Added by Ivan Tcholakov, 08-JUL-2010.
// Prevention from multiple calls of the initialization function.
var AMinitialized = false;
//
function init(){
// Added by Ivan Tcholakov, 08-JUL-2010.
if (AMinitialized) { return true; }
//
var msg, warnings = new Array();
if (document.getElementById==null){
alert("This webpage requires a recent browser such as Mozilla Firefox/Netscape 7+ or Internet Explorer 6+ with MathPlayer and Adobe SVGviewer");
@ -182,6 +192,9 @@ function init(){
if (checkIfSVGavailable && (msg = checkSVG())) warnings.push(msg);
if (warnings.length>0) displayWarnings(warnings);
initSymbols();
// Added by Ivan Tcholakov, 08-JUL-2010.
AMinitialized = true;
//
return true;
}
@ -542,7 +555,6 @@ AMquote,
{input:"&", tag:"mo", output:"\u0026", tex:null, ttype:CONST},
{input:"^", tag:"msup", output:"^", tex:null, ttype:INFIX},
{input:"~=", tag:"mo", output:"\u2245", tex:"cong", ttype:CONST},
{input:"aa", tag:"mo", output:"\u00E5", tex:null, ttype:CONST},
{input:"abs", tag:"mo", output:"abs", tex:null, ttype:UNARY, func:true},
{input:"acute", tag:"mover", output:"\u00B4", tex:null, ttype:UNARY, acc:true},
{input:"AE", tag:"mo", output:"\u00C6", tex:null, ttype:CONST},
@ -1416,8 +1428,8 @@ function AMTparseExpr(str,rightbracket) {
if (right==')' || right==']') {
var left = newFrag.charAt(6);
if ((left=='(' && right==')' && symbol.output != '}') || (left=='[' && right==']')) {
var mxout = '\\matrix{';
//var mxout = '\\begin{array}{cc}';
//var mxout = '\\matrix{';
var mxout = '\\begin{array}{cc}';
var pos = new Array(); //position of commas
pos.push(0);
var matrix = true;
@ -1447,8 +1459,8 @@ function AMTparseExpr(str,rightbracket) {
mxout += subarr.join('&');
}
}
mxout += '}';
//mxout += '\\end{array}';
//mxout += '}';
mxout += '\\end{array}';
if (matrix) { newFrag = mxout;}
}
}
@ -1484,19 +1496,25 @@ function AMTparseAMtoTeX(str) {
}
function AMTparseMath(str,istex) {
if (istex) {
var texstring = str;
} else {
var texstring = AMTparseAMtoTeX(str);
}
//alert(texstring);
if (istex) {
var texstring = str;
} else {
var texstring = AMTparseAMtoTeX(str);
}
//alert(texstring);
if (mathcolor!="") {
texstring = "\\"+mathcolor + texstring;
if (AMTcgiloc.match(/mathtex/)) {
texstring = "\\gammacorrection{1.4}\\usepackage{color}\\color\{" + mathcolor + "\}" + texstring;
} else if (AMTcgiloc.match(/mimetex/)) {
texstring = "\\" + mathcolor + texstring;
} else if (AMTcgiloc.match(/.latex/)) {
texstring = texstring = "\\color\{" + mathcolor + "\}" + texstring;
}
}
if (displaystyle) {
texstring = "\\displaystyle" + texstring;
texstring = "\\displaystyle" + texstring;
} else {
texstring = "\\textstyle" + texstring;
texstring = "\\textstyle" + texstring;
}
if (AMTcgiloc.match(/google/)) {
var tclr = mathcolor;
@ -1545,6 +1563,9 @@ function AMTparseMath(str,istex) {
if (AMTcgiloc.match(/google/)) {
texstring = texstring + "&chf=bg,s," + bclr + "&chco=" + tclr;
}
if (AMTcgiloc.indexOf('?') == -1) {
AMTcgiloc = AMTcgiloc + '?';
}
node.src = AMTcgiloc + texstring;
node.style.verticalAlign = "middle";
if (showasciiformulaonhover) //fixed by djhsu so newline
@ -1928,7 +1949,7 @@ function AMautomathrec(str) {
function processNodeR(n, linebreaks,latex) {
var mtch, str, arr, frg, i;
if (n.childNodes.length == 0) {
if ((n.nodeType!=8 || linebreaks) &&
if ((n.nodeType!=8 || linebreaks) && n.parentNode &&
n.parentNode.nodeName!="form" && n.parentNode.nodeName!="FORM" &&
n.parentNode.nodeName!="textarea" && n.parentNode.nodeName!="TEXTAREA" /*&&
n.parentNode.nodeName!="pre" && n.parentNode.nodeName!="PRE"*/) {
@ -2455,8 +2476,6 @@ var LMsymbols = [
{input:"\\#", tag:"mo", output:"\u0023", ttype:CONST},
{input:"\\%", tag:"mo", output:"\u0025", ttype:CONST},
{input:"\\&", tag:"mo", output:"\u0026", ttype:CONST},
{input:"\\AA", tag:"mo", output:"\u00C5", ttype:CONST},
{input:"\\aa", tag:"mo", output:"\u00E5", ttype:CONST},
{input:"\\AE", tag:"mo", output:"\u00C6", ttype:CONST},
{input:"\\ae", tag:"mo", output:"\u00E6", ttype:CONST},
{input:"\\approxeq", tag:"mo", output:"\u224A", ttype:CONST},
@ -3402,11 +3421,8 @@ General Public License (at http://www.gnu.org/license/lgpl.html)
for more details.*/
// you can change these
var checkIfSVGavailable = true;
// Modified by Ivan Tcholakov, 01-JUL-2010.
//var checkIfSVGavailable = true;
var checkIfSVGavailable = false;
//
//Modified by Ivan Tcholakov, 01-JUL-2010.
//var notifyIfNoSVG = true;
var notifyIfNoSVG = false;
//
@ -4687,7 +4703,7 @@ function ASpreprocess() {
for (var i=len-1; i>=0; i--) {
picture = pictures[i];
var sscr = picture.getAttribute("sscr");
if (sscr!='') {
if (sscr && sscr!='') {
if (noSVG) {
n = document.createElement('img');
n.setAttribute("style",picture.getAttribute("style"));
@ -4697,9 +4713,12 @@ function ASpreprocess() {
} else {
com = parseShortScript(sscr);
picture.setAttribute("script",com);
picture.className = "ASCIIsvg";
//picture.className = "ASCIIsvg";
}
}
if (!noSVG) {
picture.className = "ASCIIsvg";
}
}
}

@ -53,19 +53,12 @@ class Attendance
$data = array();
if (!empty($course_db_name)) {
//$course_info = api_get_course_info($course_code);
$tbl_attendance = Database :: get_course_table(TABLE_ATTENDANCE, $course_db_name);
}
$condition_session = '';
if (isset($session_id)) {
$session_id = intval($session_id);
$condition_session = ' WHERE session_id = '.$session_id;
} else {
$session_id = api_get_session_id();
$condition_session = api_get_session_condition($session_id);
}
$session_id = isset($session_id)?intval($session_id):api_get_session_id();
$condition_session = api_get_session_condition($session_id);
// Get attendance data
$sql = "SELECT id, name, attendance_qualify_max FROM $tbl_attendance WHERE active = 1 $condition_session ";
$rs = Database::query($sql);

@ -815,7 +815,7 @@ var onReadyRegister = function()
document.write( Args().Title ) ;
// ]]>
</script>
<div id="closeButton" onclick="Cancel();"></div>
<div id="closeButton" onclick="javascript: Cancel();"></div>
</div>
<div id="TabsRow" class="PopupTabArea" style="display: none">
<table border="0" cellpadding="0" cellspacing="0" width="100%">

@ -122,7 +122,7 @@ document.write( '<link href="' + FCKConfig.SkinPath + 'fck_dialog.css" type="tex
// Create the IFRAME that holds the dialog contents.
window.frames["frmMain"].document.location.href =Args().Page;
window.frames["frmMain"].document.location.href = Args().Page ;
//$( 'innerContents' ).innerHTML = '<iframe id="frmMain" src="' + Args().Page + '" name="frmMain" frameborder="0" width="100%" height="100%" scrolling="auto" style="visibility: hidden;" allowtransparency="true"><\/iframe>' ;
} ;
@ -146,13 +146,14 @@ document.write( '<link href="' + FCKConfig.SkinPath + 'fck_dialog.css" type="tex
// ]]>
</script>
</head>
<body onload="Init();" class="PopupBody">
<body onload="javascript: Init();" class="PopupBody">
<table height="100%" cellspacing="0" cellpadding="0" width="100%" border="0">
<tr>
<td id="TitleArea" class="PopupTitleSimple">
<script type="text/javascript">
document.write( Args().Title ) ;
// <![CDATA[
document.write( Args().Title ) ;
// ]]>
</script>
</td>
</tr>

@ -33,11 +33,18 @@ function GetFolders( $resourceType, $currentFolder )
$oCurrentFolder = @opendir( $sServerDir ) ;
$in_group = api_is_in_group();
$in_shared_folder = $currentFolder == '/shared_folder/';
if($currentFolder=='/shared_folder/' || $currentFolder =='/shared_folder_session_'.api_get_session_id().'/')
{
$in_shared_folder=true;
}
else
{
$in_shared_folder=false;
}
$user_id = api_get_user_id();
if ($oCurrentFolder !== false)
{
{
while ( $sFile = readdir( $oCurrentFolder ) )
{
if ( $sFile != '.' && $sFile != '..'
@ -79,7 +86,16 @@ function GetFoldersAndFiles( $resourceType, $currentFolder )
$oCurrentFolder = @opendir( $sServerDir ) ;
$in_group = api_is_in_group();
$in_shared_folder = $currentFolder == '/shared_folder/';
if($currentFolder=='/shared_folder/' || $currentFolder =='/shared_folder_session_'.api_get_session_id().'/')
{
$in_shared_folder=true;
}
else
{
$in_shared_folder=false;
}
$user_id = api_get_user_id();
if ($oCurrentFolder !== false)

@ -49,8 +49,16 @@ if (api_is_in_course()) {
if (api_is_allowed_to_edit()) {
$Config['UserFilesPath'] = api_get_path(REL_COURSE_PATH).api_get_course_path().'/document/';
} else {
// 1.2. Student
$Config['UserFilesPath'] = api_get_path(REL_COURSE_PATH).api_get_course_path().'/document/shared_folder/sf_user_'.api_get_user_id().'/';
// 1.2. Student
$current_session_id = api_get_session_id();
if($current_session_id==0)
{
$Config['UserFilesPath'] = api_get_path(REL_COURSE_PATH).api_get_course_path().'/document/shared_folder/sf_user_'.api_get_user_id().'/';
}
else
{
$Config['UserFilesPath'] = api_get_path(REL_COURSE_PATH).api_get_course_path().'/document/shared_folder_session_'.$current_session_id.'/sf_user_'.api_get_user_id().'/';
}
}
} else {
// 2. Inside a course and inside a group.

@ -46,9 +46,18 @@ if (api_is_in_course())
}
else
{
// 1.2. Student
$IMConfig['base_dir'] = api_get_path(SYS_COURSE_PATH).api_get_course_path().'/document/shared_folder/sf_user_'.api_get_user_id().'/';
$IMConfig['base_url'] = api_get_path(WEB_COURSE_PATH).api_get_course_path().'/document/shared_folder/sf_user_'.api_get_user_id().'/';
// 1.2. Student
$current_session_id = api_get_session_id();
if($current_session_id==0)
{
$IMConfig['base_dir'] = api_get_path(SYS_COURSE_PATH).api_get_course_path().'/document/shared_folder/sf_user_'.api_get_user_id().'/';
$IMConfig['base_url'] = api_get_path(WEB_COURSE_PATH).api_get_course_path().'/document/shared_folder/sf_user_'.api_get_user_id().'/';
}
else
{
$IMConfig['base_dir'] = api_get_path(SYS_COURSE_PATH).api_get_course_path().'/document/shared_folder_session_'.$current_session_id.'/sf_user_'.api_get_user_id().'/';
$IMConfig['base_url'] = api_get_path(WEB_COURSE_PATH).api_get_course_path().'/document/shared_folder_session_'.$current_session_id.'/sf_user_'.api_get_user_id().'/';
}
}
}
else

@ -83,7 +83,7 @@
// Checking whether the selected object is a real image.
if ( FCK.IsRealImage( image ) )
{
var command = new FCKDialogCommand( 'Image', FCKLang.DlgImgTitle, 'dialog/fck_image.html', 600, 450 ) ;
var command = new FCKDialogCommand( 'Image', FCKLang.DlgImgTitle, 'dialog/fck_image.html', 600, 455 ) ;
command.Execute() ;
return ;
}

File diff suppressed because one or more lines are too long

@ -85,7 +85,15 @@
{
if(!api_is_allowed_to_edit())
{
$dokeosFolder='/shared_folder/sf_user_'.api_get_user_id().$dokeosFolder;
$current_session_id = api_get_session_id();
if($current_session_id==0)
{
$dokeosFolder='/shared_folder/sf_user_'.api_get_user_id().$dokeosFolder;
}
else
{
$dokeosFolder='/shared_folder_session_'.$current_session_id.'/sf_user_'.api_get_user_id().$dokeosFolder;
}
}
}

@ -101,7 +101,15 @@
}
else
{
$PathDokeosAjaxFileManager='../../../../../../../courses/'.$_course['path'].'/document/shared_folder/sf_user_'.api_get_user_id().'/';
$current_session_id = api_get_session_id();
if($current_session_id==0)
{
$PathDokeosAjaxFileManager='../../../../../../../courses/'.$_course['path'].'/document/shared_folder/sf_user_'.api_get_user_id().'/';
}
else
{
$PathDokeosAjaxFileManager='../../../../../../../courses/'.$_course['path'].'/document/shared_folder_session_'.$current_session_id.'/sf_user_'.api_get_user_id().'/';
}
}
}
}

@ -27,50 +27,42 @@ document.write( FCKTools.GetStyleHtml( GetCommonDialogCss() ) ) ;
</script>
<style type="text/css">
body, td, input, textarea, select, label { font-family: Arial, Verdana, Geneva, helvetica, sans-serif; font-size: 11px; }
</style>
<style type="text/css">
body, td, input, textarea, select, label, button { font-family: Arial, Verdana, Geneva, helvetica, sans-serif; font-size: 11px; }
form { padding: 0px; margin: 0px; }
form p { margin-top: 5px; margin-bottom: 5px; }
table { font: 11px Tahoma,Verdana,sans-serif; }
select, input, button { font: 11px Tahoma,Verdana,sans-serif; }
table .label { text-align: right; width: 8em; }
.fl { width: 9em; float: left; padding: 2px 5px; text-align: right; }
.fr { width: 7em; float: left; padding: 2px 5px; text-align: right; }
fieldset { padding: 0px 10px 5px 5px; }
.space { padding: 2px; }
#buttons {
margin-top: 10px;
#clickInput
{
width: 100%;
border-collapse: collapse;
background-color: white;
text-align: center;
}
#outputNode,#inputText,#mathml {
padding:5px;
background-color:white;
width:98%;
height:130px;
font-size:1.3em;
border: 1px solid darkgrey;
overflow:auto;
#clickInput td
{
border: 1px solid gray;
font-size: 1.1em;
}
#clickInput {
width:100%;
border-collapse:collapse;
#inputText, #outputNode
{
padding: 5px;
background-color: white;
text-align:center;
}
#clickInput td {
border: thin solid gray;
cursor:pointer;
font-size:1.1em;
width: 98%;
height: 130px;
font-size: 1.3em;
border: 1px solid darkgrey;
overflow: auto;
}
h3 {
font-size:1.6em;
.Hand
{
cursor: pointer;
cursor: hand;
}
</style>
</style>
</head>
<body scroll="no" style="overflow: hidden;">
@ -80,155 +72,156 @@ Table modified from CharacterMap for ASCIIMathML by Peter Jipsen
HTMLSource based on HTMLArea XTD 1.5 (http://mosforge.net/projects/htmlarea3xtd/) modified by Holger Hees
Original Author - Bernhard Pfeifer novocaine@gmx.net
-->
<table id="clickInput">
<table id="clickInput">
<tr>
<td colspan="3" class="character" title="(x+1)/(x-1)" onclick="javascript: Set('(x+1)/(x-1)');">`(x+1)/(x-1)`</td>
<td colspan="2" class="character" title="x^(m+n)" onclick="javascript: Set('x^(m+n)');">`x^(m+n)`</td>
<td colspan="2" class="character" title="x_(mn)" onclick="javascript: Set('x_(mn)');">`x_(mn)`</td>
<td colspan="2" class="character" title="sqrt(x)" onclick="javascript: Set('sqrt(x)');">`sqrt(x)`</td>
<td colspan="3" class="character" title="root(n)(x)" onclick="javascript: Set('root(n)(x)');">`root(n)(x)`</td>
<td colspan="2" class="character" title="&quot;text&quot;" onclick="javascript: Set('&quot;text&quot;');">`&quot;text&quot;`</td>
<td colspan="2" class="character" style="cursor:default"></td>
<td colspan="3" class="Hand" title="(x+1)/(x-1)" onclick="javascript: Set('(x+1)/(x-1)');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/x1x1.png" /></td>
<td colspan="2" class="Hand" title="x^(m+n)" onclick="javascript: Set('x^(m+n)');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/xmn.png" /></td>
<td colspan="2" class="Hand" title="x_(mn)" onclick="javascript: Set('x_(mn)');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/x_mn.png" /></td>
<td colspan="2" class="Hand" title="sqrt(x)" onclick="javascript: Set('sqrt(x)');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/sqrtx.png" /></td>
<td colspan="3" class="Hand" title="root(n)(x)" onclick="javascript: Set('root(n)(x)');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/rootnx.png" /></td>
<td colspan="3" class="Hand" title="{(1 if x&gt;=0),(0 if x&lt;0):}" onclick="javascript: Set('{(1 if x&gt;=0),(0 if x&lt;0):}');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/ifx.png" /></td>
<td colspan="2" class="Hand" title="&quot;text&quot;" onclick="javascript: Set('&quot;text&quot;');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/text.png" /></td>
</tr><tr>
<td colspan="2" class="character" title="dy/dx" onclick="javascript: Set('dy/dx');">`dy/dx`</td>
<td colspan="3" class="character" title="lim_(x-&gt;oo)" onclick="javascript: Set('lim_(x-&gt;oo)');">`lim_(x-&gt;oo)`</td>
<td colspan="3" class="character" title="sum_(n=1)^oo" onclick="javascript: Set('sum_(n=1)^oo');">`sum_(n=1)^oo`</td>
<td colspan="3" class="character" title="int_a^bf(x)dx" onclick="javascript: Set('int_a^bf(x)dx');">`int_a^bf(x)dx`</td>
<td colspan="3" class="character" title="[[a,b],[c,d]]" onclick="javascript: Set('[[a,b],[c,d]]');">`[[a,b],[c,d]]`</td>
<td colspan="2" class="character" title="((n),(k))" onclick="javascript: Set('((n),(k))');">`((n),(k))`</td>
<td colspan="2" class="Hand" title="dy/dx" onclick="javascript: Set('dy/dx');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/dydx.png" /></td>
<td colspan="3" class="Hand" title="lim_(x-&gt;oo)" onclick="javascript: Set('lim_(x-&gt;oo)');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/lim.png" /></td>
<td colspan="3" class="Hand" title="sum_(n=1)^oo" onclick="javascript: Set('sum_(n=1)^oo');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/sumn.png" /></td>
<td colspan="3" class="Hand" title="int_a^bf(x)dx" onclick="javascript: Set('int_a^bf(x)dx');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/intab.png" /></td>
<td colspan="3" class="Hand" title="[[a,b],[c,d]]" onclick="javascript: Set('[[a,b],[c,d]]');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/abcd.png" /></td>
<td colspan="2" class="Hand" title="((n),(k))" onclick="javascript: Set('((n),(k))');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/nk.png" /></td>
</tr><tr>
<td class="character" title="*" onclick="javascript: Set('*');">`*`</td>
<td class="character" title="**" onclick="javascript: Set('**');">`**`</td>
<td class="character" title="//" onclick="javascript: Set('//');">`//`</td>
<td class="character" title="\\" onclick="javascript: Set('\\\\');">`\\`</td>
<td class="character" title="xx" onclick="javascript: Set('xx');">`xx`</td>
<td class="character" title="-:" onclick="javascript: Set('-:');">`-:`</td>
<td class="character" title="@" onclick="javascript: Set('@');">`@`</td>
<td class="character" title="o+" onclick="javascript: Set('o+');">`o+`</td>
<td class="character" title="ox" onclick="javascript: Set('ox');">`ox`</td>
<td class="character" title="o." onclick="javascript: Set('o.');">`o.`</td>
<td class="character" title="sum" onclick="javascript: Set('sum');">`sum`</td>
<td class="character" title="prod" onclick="javascript: Set('prod');">`prod`</td>
<td class="character" title="^^" onclick="javascript: Set('^^');">`^^`</td>
<td class="character" title="^^^" onclick="javascript: Set('^^^');"><span style="font-size:larger">`&and;`</span></td>
<td class="character" title="vv" onclick="javascript: Set('vv');">`vv`</td>
<td class="character" title="vvv" onclick="javascript: Set('vvv');"><span style="font-size:larger">`&or;`</span></td>
<td class="Hand" title="*" onclick="javascript: Set('*');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/dot.png" /></td>
<td class="Hand" title="**" onclick="javascript: Set('**');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/star.png" /></td>
<td class="Hand" title="//" onclick="javascript: Set('//');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/slash.png" /></td>
<td class="Hand" title="\\" onclick="javascript: Set('\\\\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/backslash.png" /></td>
<td class="Hand" title="xx" onclick="javascript: Set('xx');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/times.png" /></td>
<td class="Hand" title="-:" onclick="javascript: Set('-:');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/div.png" /></td>
<td class="Hand" title="@" onclick="javascript: Set('@');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/circ.png" /></td>
<td class="Hand" title="o+" onclick="javascript: Set('o+');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/oplus.png" /></td>
<td class="Hand" title="ox" onclick="javascript: Set('ox');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/otimes.png" /></td>
<td class="Hand" title="o." onclick="javascript: Set('o.');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/odot.png" /></td>
<td class="Hand" title="sum" onclick="javascript: Set('sum');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/sum.png" /></td>
<td class="Hand" title="prod" onclick="javascript: Set('prod');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/prod.png" /></td>
<td class="Hand" title="^^" onclick="javascript: Set('^^');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/wedge.png" /></td>
<td class="Hand" title="^^^" onclick="javascript: Set('^^^');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/bigwedge.png" /></td>
<td class="Hand" title="vv" onclick="javascript: Set('vv');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/vee.png" /></td>
<td class="Hand" title="vvv" onclick="javascript: Set('vvv');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/bigvee.png" /></td>
</tr><tr>
<td class="character" title="!=" onclick="javascript: Set('!=');">`!=`</td>
<td class="character" title="&lt;=" onclick="javascript: Set('&lt;=');">`&lt;=`</td>
<td class="character" title="&gt;=" onclick="javascript: Set('&gt;=');">`&gt;=`</td>
<td class="character" title="-&lt;" onclick="javascript: Set('-&lt;');">`-&lt;`</td>
<td class="character" title="&gt;-" onclick="javascript: Set('&gt;-');">`&gt;-`</td>
<td class="character" title="in" onclick="javascript: Set('in');">`in`</td>
<td class="character" title="!in" onclick="javascript: Set('!in');">`!in`</td>
<td class="character" title="sub" onclick="javascript: Set('sub');">`sub`</td>
<td class="character" title="sup" onclick="javascript: Set('sup');">`sup`</td>
<td class="character" title="sube" onclick="javascript: Set('sube');">`sube`</td>
<td class="character" title="supe" onclick="javascript: Set('supe');">`supe`</td>
<td class="character" title="O/" onclick="javascript: Set('O/');">`O/`</td>
<td class="character" title="nn" onclick="javascript: Set('nn');">`nn`</td>
<td class="character" title="nnn" onclick="javascript: Set('nnn');"><span style="font-size:larger">`&cap;`</span></td>
<td class="character" title="uu" onclick="javascript: Set('uu');">`uu`</td>
<td class="character" title="uuu" onclick="javascript: Set('uuu');"><span style="font-size:larger">`&cup;`</span></td>
<td class="Hand" title="!=" onclick="javascript: Set('!=');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/ne.png" /></td>
<td class="Hand" title="&lt;=" onclick="javascript: Set('&lt;=');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/le.png" /></td>
<td class="Hand" title="&gt;=" onclick="javascript: Set('&gt;=');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/ge.png" /></td>
<td class="Hand" title="-&lt;" onclick="javascript: Set('-&lt;');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/prec.png" /></td>
<td class="Hand" title="&gt;-" onclick="javascript: Set('&gt;-');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/succ.png" /></td>
<td class="Hand" title="in" onclick="javascript: Set('in');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/in.png" /></td>
<td class="Hand" title="!in" onclick="javascript: Set('!in');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/notin.png" /></td>
<td class="Hand" title="sub" onclick="javascript: Set('sub');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/subset.png" /></td>
<td class="Hand" title="sup" onclick="javascript: Set('sup');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/supset.png" /></td>
<td class="Hand" title="sube" onclick="javascript: Set('sube');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/subseteq.png" /></td>
<td class="Hand" title="supe" onclick="javascript: Set('supe');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/supseteq.png" /></td>
<td class="Hand" title="O/" onclick="javascript: Set('O/');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/emptyset.png" /></td>
<td class="Hand" title="nn" onclick="javascript: Set('nn');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/cap.png" /></td>
<td class="Hand" title="nnn" onclick="javascript: Set('nnn');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/bigcap.png" /></td>
<td class="Hand" title="uu" onclick="javascript: Set('uu');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/cup.png" /></td>
<td class="Hand" title="uuu" onclick="javascript: Set('uuu');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/bigcup.png" /></td>
</tr><tr>
<td class="character" title="and" onclick="javascript: Set('and');">`and`</td>
<td class="character" title="or" onclick="javascript: Set('or');">`or`</td>
<td class="character" title="not" onclick="javascript: Set('not');">`not`</td>
<td class="character" title="=&gt;" onclick="javascript: Set('==&gt;');">`=&gt;`</td>
<td class="character" title="if" onclick="javascript: Set('if');">`if`</td>
<td class="character" title="&lt;=&gt;" onclick="javascript: Set('&lt;=&gt;');">`&lt;=&gt;`</td>
<td class="character" title="AA" onclick="javascript: Set('AA');">`AA`</td>
<td class="character" title="EE" onclick="javascript: Set('EE');">`EE`</td>
<td class="character" title="_|_" onclick="javascript: Set('_|_');">`_|_`</td>
<td class="character" title="TT" onclick="javascript: Set('TT');">`TT`</td>
<td class="character" title="|--" onclick="javascript: Set('|--');">`|--`</td>
<td class="character" title="|==" onclick="javascript: Set('|==');">`|==`</td>
<td class="character" title="-=" onclick="javascript: Set('-=');">`-=`</td>
<td class="character" title="~=" onclick="javascript: Set('~=');">`~=`</td>
<td class="character" title="~~" onclick="javascript: Set('~~');">`~~`</td>
<td class="character" title="prop" onclick="javascript: Set('prop');">`prop`</td>
<td class="Hand" title="and" onclick="javascript: Set('and');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/text_and.png" /></td>
<td class="Hand" title="or" onclick="javascript: Set('or');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/text_or.png" /></td>
<td class="Hand" title="not" onclick="javascript: Set('not');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/not.png" /></td>
<td class="Hand" title="=&gt;" onclick="javascript: Set('=&gt;');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/rightarrow.png" /></td>
<td class="Hand" title="if" onclick="javascript: Set('if');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/if.png" /></td>
<td class="Hand" title="&lt;=&gt;" onclick="javascript: Set('&lt;=&gt;');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/leftrightarrow.png" /></td>
<td class="Hand" title="AA" onclick="javascript: Set('AA');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/forall.png" /></td>
<td class="Hand" title="EE" onclick="javascript: Set('EE');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/exists.png" /></td>
<td class="Hand" title="_|_" onclick="javascript: Set('_|_');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/bot.png" /></td>
<td class="Hand" title="TT" onclick="javascript: Set('TT');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/top.png" /></td>
<td class="Hand" title="|--" onclick="javascript: Set('|--');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/vdash.png" /></td>
<td class="Hand" title="|==" onclick="javascript: Set('|==');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/models.png" /></td>
<td class="Hand" title="-=" onclick="javascript: Set('-=');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/equiv.png" /></td>
<td class="Hand" title="~=" onclick="javascript: Set('~=');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/cong.png" /></td>
<td class="Hand" title="~~" onclick="javascript: Set('~~');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/approx.png" /></td>
<td class="Hand" title="prop" onclick="javascript: Set('prop');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/propto.png" /></td>
</tr><tr>
<td class="character" title="int" onclick="javascript: Set('int');">`int`</td>
<td class="character" title="oint" onclick="javascript: Set('oint');">`oint`</td>
<td class="character" title="del" onclick="javascript: Set('del');">`del`</td>
<td class="character" title="grad" onclick="javascript: Set('grad');">`grad`</td>
<td class="character" title="+-" onclick="javascript: Set('+-');">`+-`</td>
<td class="character" title="oo" onclick="javascript: Set('oo');">`oo`</td>
<td class="character" title="aleph" onclick="javascript: Set('aleph');">`aleph`</td>
<td class="character" title="quad" onclick="javascript: Set('quad');">`quad`</td>
<td class="character" title="diamond" onclick="javascript: Set('diamond');">`diamond`</td>
<td class="character" title="square" onclick="javascript: Set('square');">`square`</td>
<td class="character" title="|__" onclick="javascript: Set('|__');">`|__`</td>
<td class="character" title="__|" onclick="javascript: Set('__|');">`__|`</td>
<td class="character" title="|~" onclick="javascript: Set('|~');">`|~`</td>
<td class="character" title="~|" onclick="javascript: Set('~|');">`~|`</td>
<td class="character" title="&lt;x&gt;" onclick="javascript: Set('&lt;x&gt;');">`&lt;x&gt;`</td>
<td class="character" title="/_" onclick="javascript: Set('/_');">`/_`</td>
<td class="Hand" title="int" onclick="javascript: Set('int');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/int.png" /></td>
<td class="Hand" title="oint" onclick="javascript: Set('oint');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/oint.png" /></td>
<td class="Hand" title="del" onclick="javascript: Set('del');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/partial.png" /></td>
<td class="Hand" title="grad" onclick="javascript: Set('grad');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/nabla.png" /></td>
<td class="Hand" title="+-" onclick="javascript: Set('+-');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/pm.png" /></td>
<td class="Hand" title="oo" onclick="javascript: Set('oo');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/infty.png" /></td>
<td class="Hand" title="A\ B (space between A and B)" onclick="javascript: Set('A\\ B');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/space.png" /></td>
<td class="Hand" title="AquadB (double space between A and B)" onclick="javascript: Set('AquadB');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/quad.png" /></td>
<td class="Hand" title="diamond" onclick="javascript: Set('diamond');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/diamond.png" /></td>
<td class="Hand" title="square" onclick="javascript: Set('square');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/square.png" /></td>
<td class="Hand" title="|__" onclick="javascript: Set('|__');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/lfloor.png" /></td>
<td class="Hand" title="__|" onclick="javascript: Set('__|');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/rfloor.png" /></td>
<td class="Hand" title="|~" onclick="javascript: Set('|~');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/lceil.png" /></td>
<td class="Hand" title="~|" onclick="javascript: Set('~|');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/rceil.png" /></td>
<td class="Hand" title="&lt;&lt;x&gt;&gt;" onclick="javascript: Set('&lt;&lt;x&gt;&gt;');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/braxcket.png" /></td>
<td class="Hand" title="/_" onclick="javascript: Set('/_');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/angle.png" /></td>
</tr><tr>
<td class="character" title="uarr" onclick="javascript: Set('uarr');">`uarr`</td>
<td class="character" title="darr" onclick="javascript: Set('darr');">`darr`</td>
<td class="character" title="larr" onclick="javascript: Set('larr');">`larr`</td>
<td class="character" title="-&gt;" onclick="javascript: Set('-&gt;');">`-&gt;`</td>
<td class="character" title="|-&gt;" onclick="javascript: Set('|-&gt;');">`|-&gt;`</td>
<td class="character" title="harr" onclick="javascript: Set('harr');">`harr`</td>
<td class="character" title="lArr" onclick="javascript: Set('lArr');">`lArr`</td>
<td class="character" title="rArr" onclick="javascript: Set('rArr');">`rArr`</td>
<td class="character" title="hArr" onclick="javascript: Set('hArr');">`hArr`</td>
<td class="character" title="hata" onclick="javascript: Set('hat');">`hata`</td>
<td class="character" title="ula" onclick="javascript: Set('ul');">`ula`</td>
<td class="character" title="dota" onclick="javascript: Set('dot');">`dota`</td>
<td class="character" title="ddota" onclick="javascript: Set('ddot');">`ddota`</td>
<td class="character" title="veca" onclick="javascript: Set('vec');">`veca`</td>
<td class="character" title="bara" onclick="javascript: Set('bar');">`bara`</td>
<td class="character" title=":." onclick="javascript: Set(':.');">`:.`</td>
<td class="Hand" title="uarr" onclick="javascript: Set('uarr');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/uarr.png" /></td>
<td class="Hand" title="darr" onclick="javascript: Set('darr');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/darr.png" /></td>
<td class="Hand" title="larr" onclick="javascript: Set('larr');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/larr.png" /></td>
<td class="Hand" title="-&gt;" onclick="javascript: Set('-&gt;');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/rarr.png" /></td>
<td class="Hand" title="|-&gt;" onclick="javascript: Set('|-&gt;');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/mapsto.png" /></td>
<td class="Hand" title="harr" onclick="javascript: Set('harr');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/harr.png" /></td>
<td class="Hand" title="lArr" onclick="javascript: Set('lArr');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/llarr.png" /></td>
<td class="Hand" title="rArr" onclick="javascript: Set('rArr');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/rrarr.png" /></td>
<td class="Hand" title="hArr" onclick="javascript: Set('hArr');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/hharr.png" /></td>
<td class="Hand" title="hata" onclick="javascript: Set('hata');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/hata.png" /></td>
<td class="Hand" title="ula" onclick="javascript: Set('ula');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/ula.png" /></td>
<td class="Hand" title="dota" onclick="javascript: Set('dota');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/dota.png" /></td>
<td class="Hand" title="ddota" onclick="javascript: Set('ddota');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/ddota.png" /></td>
<td class="Hand" title="veca" onclick="javascript: Set('veca');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/veca.png" /></td>
<td class="Hand" title="bara" onclick="javascript: Set('bara');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/bara.png" /></td>
<td class="Hand" title=":." onclick="javascript: Set(':.');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/therefore.png" /></td>
</tr><tr>
<td class="character" title="NN" onclick="javascript: Set('NN');">`NN`</td>
<td class="character" title="ZZ" onclick="javascript: Set('ZZ');">`ZZ`</td>
<td class="character" title="QQ" onclick="javascript: Set('QQ');">`QQ`</td>
<td class="character" title="RR" onclick="javascript: Set('RR');">`RR`</td>
<td class="character" title="CC" onclick="javascript: Set('CC');">`CC`</td>
<td class="character" title="bbA" onclick="javascript: Set('bb');">`bbA`</td>
<td class="character" title="bbbA" onclick="javascript: Set('bbb');">`bbbA`</td>
<td id="ccA" class="character" title="ccA" onclick="javascript: Set('cc');">`ccA`</td>
<td id="frA" class="character" title="frA" onclick="javascript: Set('fr');">`frA`</td>
<td class="character" title="sfA" onclick="javascript: Set('sf');">`sfA`</td>
<td class="character" title="ttA" onclick="javascript: Set('tt');">`ttA`</td>
<td colspan="4" class="character" title="stackrel(-&gt;)(+)" onclick="javascript: Set('stackrel(-&gt;)(+)');">`stackrel(-&gt;)(+)`</td>
<td class="character" title="upsilon" onclick="javascript: Set('upsilon');">`upsilon`</td>
<td class="Hand" title="NN" onclick="javascript: Set('NN');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/nn.png" /></td>
<td class="Hand" title="ZZ" onclick="javascript: Set('ZZ');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/zz.png" /></td>
<td class="Hand" title="QQ" onclick="javascript: Set('QQ');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/qq.png" /></td>
<td class="Hand" title="RR" onclick="javascript: Set('RR');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/rr.png" /></td>
<td class="Hand" title="CC" onclick="javascript: Set('CC');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/cc.png" /></td>
<td class="Hand" title="bbA" onclick="javascript: Set('bbA');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/bba.png" /></td>
<td class="Hand" title="bbbA" onclick="javascript: Set('bbbA');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/bbba.png" /></td>
<td class="Hand" title="ccA" onclick="javascript: Set('ccA');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/cca.png" /></td>
<td class="Hand" title="frA" onclick="javascript: Set('frA');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/fra.png" /></td>
<td class="Hand" title="sfA" onclick="javascript: Set('sfA');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/sfa.png" /></td>
<td class="Hand" title="ttA" onclick="javascript: Set('ttA');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/tta.png" /></td>
<td colspan="3" class="Hand" title="stackrel(-&gt;)(+)" onclick="javascript: Set('stackrel(-&gt;)(+)');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/stackrel.png" /></td>
<td class="Hand" title="aleph" onclick="javascript: Set('aleph');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/aleph.png" /></td>
<td class="Hand" title="upsilon" onclick="javascript: Set('upsilon');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/upsilon.png" /></td>
</tr><tr>
<td class="character" title="alpha" onclick="javascript: Set('alpha');">`alpha`</td>
<td class="character" title="beta" onclick="javascript: Set('beta');">`beta`</td>
<td class="character" title="gamma" onclick="javascript: Set('gamma');">`gamma`</td>
<td class="character" title="Gamma" onclick="javascript: Set('Gamma');">`Gamma`</td>
<td class="character" title="delta" onclick="javascript: Set('delta');">`delta`</td>
<td class="character" title="Delta" onclick="javascript: Set('Delta');">`Delta`</td>
<td class="character" title="epsi" onclick="javascript: Set('epsi');">`epsi`</td>
<td class="character" title="zeta" onclick="javascript: Set('zeta');">`zeta`</td>
<td class="character" title="eta" onclick="javascript: Set('eta');">`eta`</td>
<td class="character" title="theta" onclick="javascript: Set('theta');">`theta`</td>
<td class="character" title="Theta" onclick="javascript: Set('Theta');">`Theta`</td>
<td class="character" title="iota" onclick="javascript: Set('iota');">`iota`</td>
<td class="character" title="kappa" onclick="javascript: Set('kappa');">`kappa`</td>
<td class="character" title="lambda" onclick="javascript: Set('lambda');">`lambda`</td>
<td class="character" title="Lambda" onclick="javascript: Set('Lambda');">`Lambda`</td>
<td class="character" title="mu" onclick="javascript: Set('mu');">`mu`</td>
<td class="Hand" title="alpha" onclick="javascript: Set('alpha');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/alpha.png" /></td>
<td class="Hand" title="beta" onclick="javascript: Set('beta');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/beta.png" /></td>
<td class="Hand" title="gamma" onclick="javascript: Set('gamma');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/gamma.png" /></td>
<td class="Hand" title="Gamma" onclick="javascript: Set('Gamma');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/ggamma.png" /></td>
<td class="Hand" title="delta" onclick="javascript: Set('delta');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/delta.png" /></td>
<td class="Hand" title="Delta" onclick="javascript: Set('Delta');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/ddelta.png" /></td>
<td class="Hand" title="epsi" onclick="javascript: Set('epsi');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/epsilon.png" /></td>
<td class="Hand" title="zeta" onclick="javascript: Set('zeta');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/zeta.png" /></td>
<td class="Hand" title="eta" onclick="javascript: Set('eta');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/eta.png" /></td>
<td class="Hand" title="theta" onclick="javascript: Set('theta');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/theta.png" /></td>
<td class="Hand" title="Theta" onclick="javascript: Set('Theta');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/ttheta.png" /></td>
<td class="Hand" title="iota" onclick="javascript: Set('iota');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/iota.png" /></td>
<td class="Hand" title="kappa" onclick="javascript: Set('kappa');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/kappa.png" /></td>
<td class="Hand" title="lambda" onclick="javascript: Set('lambda');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/lambda.png" /></td>
<td class="Hand" title="Lambda" onclick="javascript: Set('Lambda');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/llambda.png" /></td>
<td class="Hand" title="mu" onclick="javascript: Set('mu');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/mu.png" /></td>
</tr><tr>
<td class="character" title="nu" onclick="javascript: Set('nu');">`nu`</td>
<td class="character" title="pi" onclick="javascript: Set('pi');">`pi`</td>
<td class="character" title="Pi" onclick="javascript: Set('Pi');">`Pi`</td>
<td class="character" title="rho" onclick="javascript: Set('rho');">`rho`</td>
<td class="character" title="sigma" onclick="javascript: Set('sigma');">`sigma`</td>
<td class="character" title="Sigma" onclick="javascript: Set('Sigma');">`Sigma`</td>
<td class="character" title="tau" onclick="javascript: Set('tau');">`tau`</td>
<td class="character" title="xi" onclick="javascript: Set('xi');">`xi`</td>
<td class="character" title="Xi" onclick="javascript: Set('Xi');">`Xi`</td>
<td class="character" title="phi" onclick="javascript: Set('phi');">`phi`</td>
<td class="character" title="Phi" onclick="javascript: Set('Phi');">`Phi`</td>
<td class="character" title="chi" onclick="javascript: Set('chi');">`chi`</td>
<td class="character" title="psi" onclick="javascript: Set('psi');">`psi`</td>
<td class="character" title="Psi" onclick="javascript: Set('Psi');">`Psi`</td>
<td class="character" title="omega" onclick="javascript: Set('omega');">`omega`</td>
<td class="character" title="Omega" onclick="javascript: Set('Omega');">`Omega`</td>
<td class="Hand" title="nu" onclick="javascript: Set('nu');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/nu.png" /></td>
<td class="Hand" title="pi" onclick="javascript: Set('pi');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/pi.png" /></td>
<td class="Hand" title="Pi" onclick="javascript: Set('Pi');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/ppi.png" /></td>
<td class="Hand" title="rho" onclick="javascript: Set('rho');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/rho.png" /></td>
<td class="Hand" title="sigma" onclick="javascript: Set('sigma');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/sigma.png" /></td>
<td class="Hand" title="Sigma" onclick="javascript: Set('Sigma');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/ssigma.png" /></td>
<td class="Hand" title="tau" onclick="javascript: Set('tau');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/tau.png" /></td>
<td class="Hand" title="xi" onclick="javascript: Set('xi');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/xi.png" /></td>
<td class="Hand" title="Xi" onclick="javascript: Set('Xi');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/xxi.png" /></td>
<td class="Hand" title="phi" onclick="javascript: Set('phi');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/phi.png" /></td>
<td class="Hand" title="Phi" onclick="javascript: Set('Phi');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/pphi.png" /></td>
<td class="Hand" title="chi" onclick="javascript: Set('chi');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/chi.png" /></td>
<td class="Hand" title="psi" onclick="javascript: Set('psi');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/psi.png" /></td>
<td class="Hand" title="Psi" onclick="javascript: Set('Psi');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/ppsi.png" /></td>
<td class="Hand" title="omega" onclick="javascript: Set('omega');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/omega.png" /></td>
<td class="Hand" title="Omega" onclick="javascript: Set('Omega');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/oomega.png" /></td>
</tr>
</table>
<form action="javascript: void(0);">
@ -240,10 +233,10 @@ Original Author - Bernhard Pfeifer novocaine@gmx.net
</table>
<table style="width: 100%; border: none;">
<tr>
<td style="width:50%;" >
<td style="width:50%; min-width: 300px; max-width: 435px;">
<textarea id="inputText" onkeyup="javascript: Preview();"></textarea>
</td>
<td style="width:50%;" >
<td style="width:50%; min-width: 300px; max-width: 435px;">
<div id="outputNode"></div>
</td>
</tr>
@ -252,16 +245,6 @@ Original Author - Bernhard Pfeifer novocaine@gmx.net
<a href="http://www.chapman.edu" onclick="javascript: window.open(this.href,'_blank','');return false;">Chapman University</a><br />
<span fckLang="DlgAsciiMathForMoreInfo">For more information on AsciiMathML visit this page: </span><a href="http://www1.chapman.edu/~jipsen/mathml/asciimath.html" onclick="javascript: window.open(this.href,'_blank','');return false;">http://www1.chapman.edu/~jipsen/mathml/asciimath.html</a></td></tr>
</table>
<div id="buttons">
<script type="text/javascript">
if ( !CheckBrowserCompatibility() )
{
CheckBrowserCompatibility( true ) ;
}
</script>
</div>
</form>
</body>
</html>

@ -36,6 +36,8 @@ FCKLang['DlgAsciiMathOldMathPlayer'] = FCKLang['DlgAsciiMathOldMathPlayer'] ? FC
FCKLang['DlgAsciiMathOldMathPlayer'] = FCKLang['DlgAsciiMathOldMathPlayer'].replace( '%s', '<a href="http://www.dessci.com/en/products/mathplayer/" onclick="javascript: window.open(this.href,\'_blank\');return false;">http://www.dessci.com/en/products/mathplayer/</a>' ) ;
// Settings for ASCIIMathML.js
// Checking for native MathML support, it is always needed for this dialog.
var checkForMathML = true;
// Suppressing the built-in notification messages when the browser is incompatible.
var notifyIfNoMathML = false ;
var alertIfNoMathML = false ;
@ -102,14 +104,11 @@ function Ok()
window.onload = function()
{
geckoFontWorkaround() ;
// Translate the dialog box texts.
oEditor.FCKLanguageManager.TranslatePage( document ) ;
// Translate the formulas.
translateOnLoad = true ;
generic() ;
// Initialization of the script ASCIIMathML.js.
init() ;
// Load the selected element information (if any).
LoadSelection() ;
@ -270,76 +269,14 @@ function ShowMathML()
}
}
function CheckBrowserCompatibility( show_message )
{
/*
if ( FCKBrowserInfo.IsGecko )
{
// The browser is compatible, it is genuine Gecko - Firefox, etc.
return true ;
}
else if ( FCKBrowserInfo.IsIE )
{
// Internet Explorer.
if ( FCKBrowserInfo.IsIE6 )
{
if ( isMathPlayerAvailable )
{
var start = navigator.appVersion.indexOf( 'MathPlayer' ) ;
if ( start != -1 )
{
// The browser is Internet Explorer 6.0+ with properly set up plugin MathPalyer 2.
return true ;
}
else
{
// Notify reader they need to upgrade to MathPlayer 2.
if ( show_message )
{
document.write( '<span style="color:red;">' + FCKLang['DlgAsciiMathOldMathPlayer'] + '</span>' ) ;
}
return false ;
}
}
else
{
// Direct reader to MathPlayer page.
if ( show_message )
{
document.write( '<span style="color:red;">' + FCKLang['DlgAsciiMathInstallMathPlayer'] + '</span>' ) ;
}
return false ;
}
}
else
{
// The browser is a very old version of Internet Explorer, it have to be upgraded.
if ( show_message )
{
document.write( '<span style="color:red;">' + FCKLang['DlgAsciiMathOldIE'] + '</span>' ) ;
}
return false ;
}
}
else if ( FCKBrowserInfo.IsOpera && parseFloat( navigator.appVersion, 10 ) >= 9.5 )
{
return true ;
}
// Highlighting formulas.
// The browser is not compatible.
if ( show_message )
{
document.write( '<span style="color:red;">' + FCKLang['DlgAsciiIncompatibleBrowser'] + '</span>' ) ;
}
return false ;
*/
return true ;
function over(td)
{
td.className = 'LightBackground Hand' ;
}
// Excludig from the table some characters with buggy fonts (wrong height).
function geckoFontWorkaround() {
if ( FCKBrowserInfo.IsGecko ) {
GetE( 'ccA' ).innerHTML = GetE( 'ccA' ).innerHTML.replace( /`/g, '' ) ;
GetE( 'frA' ).innerHTML = GetE( 'frA' ).innerHTML.replace( /`/g, '' ) ;
}
function out(td)
{
td.className = 'Hand' ;
}

@ -25,7 +25,7 @@ var alertIfNoSVG = false;
var translateASCIIMath = false ;
// Registering the related command.
FCKCommands.RegisterCommand( 'asciimath', new FCKDialogCommand( FCKLang['DlgAsciiMath'], FCKLang['DlgAsciiMath'], FCKConfig.PluginsPath + 'asciimath/fck_asciimath.html', 800, 630 ) ) ;
FCKCommands.RegisterCommand( 'asciimath', new FCKDialogCommand( FCKLang['DlgAsciiMath'], FCKLang['DlgAsciiMath'], FCKConfig.PluginsPath + 'asciimath/fck_asciimath.html', 800, 610 ) ) ;
// Create the "asciimath" toolbar button.
var oAsciiMathItem = new FCKToolbarButton( 'asciimath', FCKLang['DlgAsciiMath'] ) ;

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 561 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 407 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 315 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 404 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 331 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 476 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 486 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 516 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 492 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 347 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 356 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 379 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 396 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 663 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 287 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 514 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 597 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 494 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 369 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 346 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 308 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 290 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 417 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 461 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 427 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 347 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 293 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 505 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 945 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 488 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 373 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 251 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 428 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 241 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 397 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 617 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 362 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 365 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 331 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 386 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 458 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 482 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 380 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 314 B

@ -0,0 +1,8 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
</head>
<body>
<br />
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 524 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 477 B

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save