Browse Source

iassign v2018

Lucas de Souza 5 years ago
parent
commit
66ae4171cf
100 changed files with 613 additions and 338 deletions
  1. 77 0
      README.txt
  2. 14 58
      db/install.php
  3. 128 1
      db/upgrade.php
  4. 203 208
      iassign_form.php
  5. 0 0
      ilm/Risko/2.2.23/Risko.jar
  6. 0 0
      ilm/iComb/0.9.5/iComb.jar
  7. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/css/bootstrap-theme.css
  8. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/css/bootstrap-theme.css.map
  9. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/css/bootstrap-theme.min.css
  10. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/css/bootstrap-theme.min.css.map
  11. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/css/bootstrap.css
  12. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/css/bootstrap.css.map
  13. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/css/bootstrap.min.css
  14. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/css/bootstrap.min.css.map
  15. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/css/jquery-ui.css
  16. 1 0
      ilm/iFractions/0.1.2017.11.22/ifractions/css/jquery.modal.min.css
  17. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/eindex.php
  18. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/fonts/glyphicons-halflings-regular.eot
  19. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/fonts/glyphicons-halflings-regular.svg
  20. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/fonts/glyphicons-halflings-regular.ttf
  21. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/fonts/glyphicons-halflings-regular.woff
  22. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/fonts/glyphicons-halflings-regular.woff2
  23. 143 36
      ilm/ifractions/index.html
  24. 1 1
      ilm/ifractions/js/boot.js
  25. 13 9
      ilm/ifractions/js/circleOne.js
  26. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/js/jquery-ui.js
  27. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/js/jquery.js
  28. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/js/jquery.min.js
  29. 5 0
      ilm/iFractions/0.1.2017.11.22/ifractions/js/jquery.modal.min.js
  30. 2 2
      ilm/ifractions/js/menu.js
  31. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/js/phaser.js
  32. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/js/phaser.min.js
  33. 11 9
      ilm/ifractions/js/squareOne.js
  34. 15 14
      ilm/ifractions/js/squareTwo.js
  35. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/cn/save.php
  36. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/fx/beep.mp3
  37. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/fx/beep.ogg
  38. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/fx/error.mp3
  39. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/fx/error.ogg
  40. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/fx/ok.mp3
  41. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/fx/ok.ogg
  42. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/airballoon_base.png
  43. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/airballoon_upper.png
  44. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/birch.png
  45. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/farm.png
  46. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/flag.png
  47. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/garage.png
  48. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/house.png
  49. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/kid/lost.png
  50. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/kid/run.png
  51. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/kid/walk.png
  52. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/place_a.png
  53. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/place_b.png
  54. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/rock.png
  55. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/school.png
  56. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/sign.png
  57. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/tractor/frame-0.png
  58. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/tractor/frame-1.png
  59. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/tractor/frame-2.png
  60. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/tractor/frame-3.png
  61. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/tractor/frame-4.png
  62. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/tractor/frame-5.png
  63. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/tractor/frame-6.png
  64. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/tractor/frame-7.png
  65. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/tractor/frame-8.png
  66. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/tractor/frame-9.png
  67. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/tractor/frame.png
  68. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/tree.png
  69. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/tree2.png
  70. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/tree3.png
  71. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/tree4.png
  72. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/airballoon_base.png
  73. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/airballoon_upper.png
  74. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/birch.png
  75. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/farm.png
  76. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/flag.png
  77. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/garage.png
  78. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/house.png
  79. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/kid/lost.png
  80. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/kid/run.png
  81. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/kid/walk.png
  82. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/place_a.png
  83. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/place_b.png
  84. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/rock.png
  85. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/school.png
  86. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/sign.png
  87. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/tractor/frame-0.png
  88. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/tractor/frame-1.png
  89. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/tractor/frame-2.png
  90. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/tractor/frame-3.png
  91. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/tractor/frame-4.png
  92. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/tractor/frame-5.png
  93. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/tractor/frame-6.png
  94. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/tractor/frame-7.png
  95. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/tractor/frame-8.png
  96. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/tractor/frame-9.png
  97. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/tractor/frame.png
  98. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/tree.png
  99. 0 0
      ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/tree2.png
  100. 0 0
      ilm/ifractions/resource/img/es_PE/tree3.png

+ 77 - 0
README.txt

@@ -0,0 +1,77 @@
+iAssign version 2.1.70
+------------------------
+
+By iMatica/iMath - free interactive tools for teaching-learning Math
+   Patricia Rodrigues <patricnet@ig.com.br>, Leônidas O. Brandão <leo@ime.usp.br>
+
+
+.: About iAssign :.
+
+This is the iAssign (Interactive Assignment) package, an iMath free system to enrich activities in Moodle. 
+It is created by Patricia Rodrigues and Leônidas de Oliveira Brandão.
+
+iAssign's goal is to increase interactivity in activities related to specific subjects (such as Geometry, Functions, Programming,...)
+in a flexible way. 
+
+In order to improve interactivity, iAssign makes use of iLM (interactive Learning Module),
+that is any interactive tool that runs under a Web browser.
+Typically an iLM is a Java applet or an HTML5 package with a few (mandatory) communication methods, all based on HTTP protocol.
+This implies that any applet can easily became an iLM and can be integrated to Moodle under iAssign package. 
+
+If the iLM offers automatic assessment functionality, iAssign is able
+to deal with it. Under such iLM, iAssign provides immediate feedback to
+the student, and the teachers can get instant information about their
+activities (including reports about the student performance).
+
+It can be added new iLM into iAssign, at any time, but (for security
+reason), only the administrator has the privilege of integrating new iLM into iAssign.
+Once integrated, an iLM can be used by anyone registered in its Moodle.
+For instance, an user with privileges of "teacher" is allowed to use
+the iAssign authoring tools to create activities with any iLM
+(like iGeom, iGraf, or iVprog, respectively to related to the subjects, Geometry, Functions and Programming).
+
+The main features of iAssign package are:
+ - The authoring tool to allow any teacher to easily prepare activities to students. Activities can be:
+   + an exercise (the student must send an answer, and if the iLM has automatic assessment, its results (right/wrong) is also registered);
+   + a test (the student does the activity, if iLM has automatic assessment, the student gets immediate feedback, but no data is recorded in Moodle's database);
+   + an example (the student can interact with the example, but nothing is recorded).
+ - Reports about students activities: 
+   + teachers can see, e.g., a survey or statistics about student's answers and can have quick access to any submited answer;
+   + the students have a survey of their activities (including their grades)
+ - Integration with general Moodle grades
+ - A filter that allows the insertion of iLM content into any (asynchronous) Moodle text.
+
+Besides, as the majority of Moodle modules, iAssign can export (as backup) one activity or a complete lesson (a set of activities).
+
+Note: This plugin is part of iAssign SET see more in https://moodle.org/plugins/browse.php?list=set&id=54
+
+.: Quick install instructions (to be used by the system administrator) :.
+
+0) Be sure you have (at least) Moodle 2.4 until Moodle 2.6 installed
+1) Be sure to have the latest language package, such as English (en), Portuguese (pt_br).
+2) Be sure to have the latest version of the module iAssign (see in https://github.com/leonidasbrandao/iAssign master)
+3) Unpack 'iAssign.2.1.x.zip' (or 'iAssign.2.1.x.tgz')
+4) Copy the 'iassign' module directory into the "mod" subdirectory of Moodle installation
+5) Under role "administrator", go to the 'Site administration' and click on 'Notifications'
+6) Have fun.
+
+
+.: What is news :.
+
+Considering the iAssign for Moodle 1.9, the new featuress in this version are:
+
+ - the teacher can produce a new interactive activity directly "on-line", using the new iLM editor (but is still possible to upload files);
+ - in a course with more than one teacher, it is now possible to use a local repository.
+ - See more in http://docs.moodle.org/en/iAssign.
+
+
+Comments and suggestions are always welcome at http://www.matematica.br/iassign or https://github.com/leonidasbrandao/iAssign.
+(if the comment area is missing, please send us an email).
+
+
+Best regards,
+
+Leônidas <leo@ime.usp.br> and Patricia <patricnet@ig.com.br>
+
+Institute of Mathematics and Statistics - University of São Paulo
+iMath/LInE : http://www.matematica.br : http://line.ime.usp.br

+ 14 - 58
db/install.php

@@ -32,45 +32,40 @@ function xmldb_iassign_install() {
   global $DB, $USER, $CFG;
 
   $records = array(
-    // iGeom 5.9.21
+    // iGeom 5.9.22
     array_combine(
-            array('name', 'url', 'version', 'type', 'description', 'extension', 'file_jar', 'file_class', 'width', 'height', 'enable', 'timemodified', 'author', 'timecreated', 'evaluate'), array('iGeom', 'http://www.matematica.br/igeom', '5.9.21', 'Java', '{"en":"Interactive Geometry on the Internet","pt_br":"Geometria Interativa na Internet"}', 'geo', 'iGeom.jar', 'IGeomApplet.class', 800, 600, 1, time(), $USER->id, time(), 1)),
+            array('name', 'url', 'version', 'type', 'description', 'extension', 'file_jar', 'file_class', 'width', 'height', 'enable', 'timemodified', 'author', 'timecreated', 'evaluate'), array('iGeom', 'http://www.matematica.br/igeom', '5.9.22', 'Java', '{"en":"Interactive Geometry on the Internet","pt_br":"Geometria Interativa na Internet"}', 'geo', 'ilm/iGeom/5.9.22/iGeom.jar', 'IGeomApplet.class', 800, 600, 1, time(), $USER->id, time(), 1)),
     // iGraf 4.4.0.10
     array_combine(
-            array('name', 'url', 'version', 'type', 'description', 'extension', 'file_jar', 'file_class', 'width', 'height', 'enable', 'timemodified', 'author', 'timecreated', 'evaluate'), array('iGraf', 'http://www.matematica.br/igraf', '4.4.0.10', 'Java', '{"en":"Interactive Graphic on the Internet","pt_br":"Gráficos Interativos na Internet"}', 'grf', 'iGraf.jar', 'igraf.IGraf.class', 840, 600, 1, time(), $USER->id, time(), 1)),
+            array('name', 'url', 'version', 'type', 'description', 'extension', 'file_jar', 'file_class', 'width', 'height', 'enable', 'timemodified', 'author', 'timecreated', 'evaluate'), array('iGraf', 'http://www.matematica.br/igraf', '4.4.0.10', 'Java', '{"en":"Interactive Graphic on the Internet","pt_br":"Gráficos Interativos na Internet"}', 'grf', 'ilm/iGraf/4.4.0.10/iGraf.jar', 'igraf.IGraf.class', 840, 600, 1, time(), $USER->id, time(), 1)),
     // iComb 0.9.5
     array_combine(
-            array('name', 'url', 'version', 'type', 'description', 'extension', 'file_jar', 'file_class', 'width', 'height', 'enable', 'timemodified', 'author', 'timecreated', 'evaluate'), array('iComb', 'http://www.matematica.br/icomb', '0.9.5', 'Java', '{"en":"Combinatorics Interactive on the Internet","pt_br":"Combinatória Interativa na Internet"}', 'icb,cmb', 'iComb.jar', 'icomb.IComb.class', 750, 685, 1, time(), $USER->id, time(), 1)),
+            array('name', 'url', 'version', 'type', 'description', 'extension', 'file_jar', 'file_class', 'width', 'height', 'enable', 'timemodified', 'author', 'timecreated', 'evaluate'), array('iComb', 'http://www.matematica.br/icomb', '0.9.5', 'Java', '{"en":"Combinatorics Interactive on the Internet","pt_br":"Combinatória Interativa na Internet"}', 'icb,cmb', 'ilm/iComb/0.9.5/iComb.jar', 'icomb.IComb.class', 750, 685, 1, time(), $USER->id, time(), 1)),
     // iVProg2 2.1.0
     array_combine(
-            array('name', 'url', 'version', 'type', 'description', 'extension', 'file_jar', 'file_class', 'width', 'height', 'enable', 'timemodified', 'author', 'timecreated', 'evaluate'), array('iVProg2', 'http://www.matematica.br/ivprog2', '2.1.0', 'Java', '{"en":"Visual Interactive Programming on the Internet","pt_br":"Programação visual interativa na Internet"}', 'ivp2', 'iVProg2.jar', 'usp.ime.line.ivprog.Ilm.class', 800, 700, 1, time(), $USER->id, time(), 1)),
+            array('name', 'url', 'version', 'type', 'description', 'extension', 'file_jar', 'file_class', 'width', 'height', 'enable', 'timemodified', 'author', 'timecreated', 'evaluate'), array('iVProg2', 'http://www.matematica.br/ivprog2', '2.1.0', 'Java', '{"en":"Visual Interactive Programming on the Internet","pt_br":"Programação visual interativa na Internet"}', 'ivp2', 'ilm/iVProg2/2.1.0/iVProg2.jar', 'usp.ime.line.ivprog.Ilm.class', 800, 700, 1, time(), $USER->id, time(), 1)),
     // iTangram2 0.4.6
     array_combine(
             array('name', 'url', 'version', 'type', 'description', 'extension', 'file_jar', 'file_class', 'width', 'height', 'enable', 'timemodified', 'author', 'timecreated', 'evaluate'),
-            array('iTangram2', 'http://www.matematica.br/itangram', '0.4.6', 'Java', '{"en":"The Objective of the game is to reproduce the form of the model using all 7 pieces of iTangram","pt_br":"O Objetivo do jogo é reproduzir a forma do modelo usando todas as 7 peças do iTangram"}', 'itg2', 'iTangram2.jar', 'ilm.line.itangram2.Tangram', 800, 600, 1, time(), $USER->id, time(), 1)),
+            array('iTangram2', 'http://www.matematica.br/itangram', '0.4.6', 'Java', '{"en":"The Objective of the game is to reproduce the form of the model using all 7 pieces of iTangram","pt_br":"O Objetivo do jogo é reproduzir a forma do modelo usando todas as 7 peças do iTangram"}', 'itg2', 'ilm/iTangram2/0.4.6/iTangram2.jar', 'ilm.line.itangram2.Tangram', 800, 600, 1, time(), $USER->id, time(), 1)),
     // iHanoi 3.1.0
     array_combine(
             array('name', 'url', 'version', 'type', 'description', 'extension', 'file_jar', 'file_class', 'width', 'height', 'enable', 'timemodified', 'author', 'timecreated', 'evaluate'),
-            array('iHanoi', 'http://www.matematica.br/ihanoi', '3.1.0', 'Java', '{"en":"The Objective to move N discs from stick A to C, following some rule (from the game Towers of Hanoi)","pt_br":"O objetivo é mover N discos da haste A para C, seguindo algumas regras (implementa o jogo Torres de Hanói)"}', 'ihn', 'iHanoi.jar', 'ihanoi.iHanoi', 730, 450, 1, time(), $USER->id, time(), 1)),
+            array('iHanoi', 'http://www.matematica.br/ihanoi', '3.1.0', 'Java', '{"en":"The Objective to move N discs from stick A to C, following some rule (from the game Towers of Hanoi)","pt_br":"O objetivo é mover N discos da haste A para C, seguindo algumas regras (implementa o jogo Torres de Hanói)"}', 'ihn', 'ilm/iHanoi/3.1.0/iHanoi.jar', 'ihanoi.iHanoi', 730, 450, 1, time(), $USER->id, time(), 1)),
     // Risco 2
     array_combine(
             array('name', 'url', 'version', 'type', 'description', 'extension', 'file_jar', 'file_class', 'width', 'height', 'enable', 'timemodified', 'author', 'timecreated', 'evaluate'),
-            array('Risko', 'http://risko.pcc.usp.br/', '2.2.23', 'Java', '{"en":"Interactive computational tool for teaching geometry","pt_br":"Ferramenta computacional interativa para o ensino de geometria"}', 'rsk', 'Risko.jar', 'RiskoApplet.class', 800, 600, 1, time(), $USER->id, time(), 0)),
+            array('Risko', 'http://risko.pcc.usp.br/', '2.2.23', 'Java', '{"en":"Interactive computational tool for teaching geometry","pt_br":"Ferramenta computacional interativa para o ensino de geometria"}', 'rsk', 'ilm/Risko/2.2.23/Risko.jar', 'RiskoApplet.class', 800, 600, 1, time(), $USER->id, time(), 0)),
     // iVProgH5 0.1 - HTML5
     array_combine(
              array('name', 'url', 'version', 'type', 'description', 'extension', 'file_jar', 'file_class', 'width', 'height', 'enable', 'timemodified', 'author', 'timecreated', 'evaluate'), 
-             array('iVProgH5', 'http://www.matematica.br/ivprogh5', '0.1.0', 'HTML5', '{"en":"Visual Interactive Programming on the Internet HTML5","pt_br":"Programação visual interativa na Internet"}', 'ivph', 'ilm/ivprog-html/', 'main.html', 800, 600, 1, time(), $USER->id, time(), 1)),
-    // fractions 0.1 - HTML5
+             array('iVProgH5', 'http://www.matematica.br/ivprogh5', '0.1.0', 'HTML5', '{"en":"Visual Interactive Programming on the Internet HTML5","pt_br":"Programação visual interativa na Internet"}', 'ivph', 'ilm/iVProgH5/0.1.0/ivprog-html/', 'main.html', 800, 600, 1, time(), $USER->id, time(), 1)),
+    // fractions 0.1.2017.11.22 - HTML5
     array_combine(
              array('name', 'url', 'version', 'type', 'description', 'extension', 'file_jar', 'file_class', 'width', 'height', 'enable', 'timemodified', 'author', 'timecreated', 'evaluate'), 
-             array('iFractions', 'http://www.line.ime.usp.br', '0.1.0', 'HTML5', '{"en":"Visual Interactive Fractions Learning","pt_br":"Aprendizagem visual interativa de frações"}', 'frc', 'ilm/ifractions/', 'index.html', 1000, 600, 1, time(), $USER->id, time(), 1))
+             array('iFractions', 'http://www.matematica.br/ifractions', '0.1.2017.11.22', 'HTML5', '{"en":"Visual Interactive Fractions Learning","pt_br":"Aprendizagem visual interativa de frações"}', 'frc', 'ilm/iFractions/0.1.2017.11.22/ifractions/', 'index.html', 1000, 600, 1, time(), $USER->id, time(), 1))
       );
 
-  $fs = get_file_storage();
-  $is_delete = true;
-  $context = context_system::instance();
-  $ilm_path = $CFG->dirroot . "/mod/iassign/ilm/";
-
   foreach ($records as $record) {
 
     // Verify if there is a previous iLM (an old version that must be kept)
@@ -83,45 +78,11 @@ function xmldb_iassign_install() {
       else
         $ilm_exists = true;
       }
+    
+    $file_jar = $record['file_jar'];
 
-    if (strtolower($record['type']) != 'html5') {
-      $filenames = explode(",", $record['file_jar']); // get the JAR filename as "*.jar" or just first name if it is HTML5
-      $file_jar = array(); // If there are several '*.jar' for this iLM
-      // If the iLM is a set of JAR files (this was the case for iComb 0.9) get all '*.jar' files separated by ','
-      foreach ($filenames as $filename) {
-        if (!$ilm_exists) {
-
-          $name_ilm = $record['name'];
-          $version_ilm = $record['version'];
-
-          $file_ilm = array(
-             'userid' => $USER->id, // ID of context
-             'contextid' => $context->id, // ID of context
-             'component' => 'mod_iassign', // usually = table name
-             'filearea' => 'ilm', // usually = table name (e.g, in table '*_files' all iAssign exercises will have 'filearea="exercise"')
-             'itemid' => 0,
-             'filepath' => '/iassign/ilm/' . iassign_utils::format_pathname($name_ilm) . '/' . iassign_utils::format_pathname($version_ilm) . '/', // any path beginning and ending in /
-             'filename' => $filename); // any filename
-          //TODO iLM_HTML5 : What model to implement to HTML5?
-          //TODO 1. The first version of iLM HTML5 in '/var/www/html/moodle/mod/iassign/ilm/ilm-nome' and others in '/var/moodledata/filedir/'?
-          //TODO 2. Inserting new iLM HTML5 by ZIP file => explode it and register in '/var/moodledata/filedir/'?
-          // Create file using the content: the file information is inserted in the Moodle table '*_files'
-          // The real file will be registered in Moodle data (default '/var/moodledata/filedir/xx/yy' - 'xxyy' is the first 4 char in '*_files.contenthash')
-          //TODO Keep this even change the model to not insert iLM HTML5 (need this object to connect with '*_iassign_ilm' bellow)
-          $file_ilm = $fs->create_file_from_string($file_ilm, file_get_contents($ilm_path . $filename));
-
-          if ($file_ilm)
-            $is_delete &= @unlink($ilm_path . $filename);
-          array_push($file_jar, $file_ilm->get_id()); // register the '*_files.id' for all JAR package from this iLM
-          }
-        else
-          $is_delete &= @unlink($ilm_path . $filename);
-        } // foreach ($filenames as $filename)
-      
-      $record['file_jar'] = implode(",", $file_jar);
-    }
     if (!empty($file_jar)) {
-      $DB->insert_record('iassign_ilm', $record, false); // insert new iLM in the table '*_iassign_ilm'
+        $DB->insert_record('iassign_ilm', $record, false); // insert new iLM in the table '*_iassign_ilm'
     }
   } // foreach ($records as $record)
   // Add iAssign button to the Atto Editor
@@ -154,11 +115,6 @@ function xmldb_iassign_install() {
     } // if (strpos($toolbar, 'iassign') === false && $toolbar && $toolbar != '')
   // end Add
 
-  $is_delete &= @unlink($ilm_path . "index.*");
-
-  if ($is_delete && is_dir($ilm_path))
-    @rmdir($ilm_path);
-
   // log event -----------------------------------------------------
   if (class_exists('plugin_manager'))
     $pluginman = plugin_manager::instance();

+ 128 - 1
db/upgrade.php

@@ -214,6 +214,133 @@ function xmldb_iassign_upgrade ($oldversion) {
 
     } // if ($oldversion < 2017021900)
 
+  if ($oldversion < 2017120100) { // last one: 2017042800 from 2017/02/19
+    // Create new field 'type', putting 'Java' if JAR and 'HTML5' if HTML5
+    // Update fields 'file_jar, file_class' of iLM iVProgH5 (from 'iVProgH5, ivprog-html/main.html' to 'ilm/ivprog-html/, main.html'
+
+    //---
+    // Define new field in iassign table to be added: type varchar(20) in { 'Java' 'HTML5' }
+    $table = new xmldb_table('iassign_ilm');
+    $new_field_type = new xmldb_field('type', XMLDB_TYPE_CHAR, '20', null, null, null, null, 'version'); // after field 'version'
+    if (!$dbman->field_exists($table, $new_field_type))
+      $dbman->add_field($table, $new_field_type);
+
+    //---      
+    // All iAssign iLM (usually 'JAR package') must get the type 'Java'
+    $list_of_ilm_installed = $DB->get_records('iassign_ilm');
+    foreach ($list_of_ilm_installed as $ilm_installed) {
+      $ilm_name = strtolower($ilm_installed->name);
+      //D echo $ilm_name . " : " . $ilm_installed->file_jar . " : " . $ilm_installed->file_class . " : " . $ilm_installed->extension . "<br/>\n";
+
+      if ($ilm_name=="ivprogh5" || $ilm_name=="ifractions" || $ilm_name=="fractions") { // if it is 'iVProgH5' (perhaps 'iFractions' already installed?)
+        $ilm_installed->type = "HTML5"; // it is HTML5
+        $file_jar = strtolower($ilm_installed->file_jar);
+        if ($ilm_name=="ivprogh5" && $file_jar=="ivprogh5") { // fields 'file_jar' and 'file_class' must have: 'ilm/ivprog-html/' and 'main.html'
+          $ilm_installed->file_jar = "ilm/ivprog-html/"; //  iVProgH5 ivprog-html/main.html
+          $ilm_installed->file_class = "main.html";
+          }
+        }
+      else
+        $ilm_installed->type = "Java"; // otherwise it is Java
+
+      $DB->update_record('iassign_ilm', $ilm_installed);
+      } // foreach
+
+    //---
+    // Insert in talbe '{iassign_ilm}' the new iLM iFractions version 0.1.2017.11.22
+    // Table 'iassign_ilm' : id name version type description url extension parent file_jar file_class width height enable timemodified author timecreated evaluate
+    /*$new_ilm_ifractions['name'] = 'iFractions';
+    $new_ilm_ifractions['version'] = '0.1.2017.11.22';
+    $new_ilm_ifractions['type'] = 'HTML5';
+    $new_ilm_ifractions['description'] = '{"en":"Visual Interactive Fractions Learning","pt_br":"Aprendizagem visual interativa de frações"}';
+    $new_ilm_ifractions['url'] = 'http://www.matematica.br/ifractions';
+    $new_ilm_ifractions['extension'] = 'frc';
+    $new_ilm_ifractions['parent'] = '0';
+    $new_ilm_ifractions['file_jar'] = 'ilm/ifractions/';
+    $new_ilm_ifractions['file_class'] = 'index.html';
+    $new_ilm_ifractions['width'] = '900';
+    $new_ilm_ifractions['height'] = '600';
+    $new_ilm_ifractions['enable'] = '1';
+    $new_ilm_ifractions['timemodified'] = time();
+    $new_ilm_ifractions['author'] = $USER->id;
+    $new_ilm_ifractions['timecreated'] = time();
+    $new_ilm_ifractions['evaluate'] = 1;
+    $DB->insert_record('iassign_ilm', $new_ilm_ifractions, false); // insert new iLM in the table '{iassign_ilm}';*/
+
+    } // if ($oldversion < 2017120101)
+
+    if ($oldversion < 2018031000) {
+      // Verify if exist iLM with the same name
+      // then, update the version and file_jar
+
+      $records = array(
+        // iGeom 5.9.22
+        array_combine(
+                array('name', 'url', 'version', 'type', 'description', 'extension', 'file_jar', 'file_class', 'width', 'height', 'enable', 'timemodified', 'author', 'timecreated', 'evaluate'), array('iGeom', 'http://www.matematica.br/igeom', '5.9.22', 'Java', '{"en":"Interactive Geometry on the Internet","pt_br":"Geometria Interativa na Internet"}', 'geo', 'ilm/iGeom/5.9.22/iGeom.jar', 'IGeomApplet.class', 800, 600, 1, time(), $USER->id, time(), 1)),
+        // iGraf 4.4.0.10
+        array_combine(
+                array('name', 'url', 'version', 'type', 'description', 'extension', 'file_jar', 'file_class', 'width', 'height', 'enable', 'timemodified', 'author', 'timecreated', 'evaluate'), array('iGraf', 'http://www.matematica.br/igraf', '4.4.0.10', 'Java', '{"en":"Interactive Graphic on the Internet","pt_br":"Gráficos Interativos na Internet"}', 'grf', 'ilm/iGraf/4.4.0.10/iGraf.jar', 'igraf.IGraf.class', 840, 600, 1, time(), $USER->id, time(), 1)),
+        // iComb 0.9.5
+        array_combine(
+                array('name', 'url', 'version', 'type', 'description', 'extension', 'file_jar', 'file_class', 'width', 'height', 'enable', 'timemodified', 'author', 'timecreated', 'evaluate'), array('iComb', 'http://www.matematica.br/icomb', '0.9.5', 'Java', '{"en":"Combinatorics Interactive on the Internet","pt_br":"Combinatória Interativa na Internet"}', 'icb,cmb', 'ilm/iComb/0.9.5/iComb.jar', 'icomb.IComb.class', 750, 685, 1, time(), $USER->id, time(), 1)),
+        // iVProg2 2.1.0
+        array_combine(
+                array('name', 'url', 'version', 'type', 'description', 'extension', 'file_jar', 'file_class', 'width', 'height', 'enable', 'timemodified', 'author', 'timecreated', 'evaluate'), array('iVProg2', 'http://www.matematica.br/ivprog2', '2.1.0', 'Java', '{"en":"Visual Interactive Programming on the Internet","pt_br":"Programação visual interativa na Internet"}', 'ivp2', 'ilm/iVProg2/2.1.0/iVProg2.jar', 'usp.ime.line.ivprog.Ilm.class', 800, 700, 1, time(), $USER->id, time(), 1)),
+        // iTangram2 0.4.6
+        array_combine(
+                array('name', 'url', 'version', 'type', 'description', 'extension', 'file_jar', 'file_class', 'width', 'height', 'enable', 'timemodified', 'author', 'timecreated', 'evaluate'),
+                array('iTangram2', 'http://www.matematica.br/itangram', '0.4.6', 'Java', '{"en":"The Objective of the game is to reproduce the form of the model using all 7 pieces of iTangram","pt_br":"O Objetivo do jogo é reproduzir a forma do modelo usando todas as 7 peças do iTangram"}', 'itg2', 'ilm/iTangram2/0.4.6/iTangram2.jar', 'ilm.line.itangram2.Tangram', 800, 600, 1, time(), $USER->id, time(), 1)),
+        // iHanoi 3.1.0
+        array_combine(
+                array('name', 'url', 'version', 'type', 'description', 'extension', 'file_jar', 'file_class', 'width', 'height', 'enable', 'timemodified', 'author', 'timecreated', 'evaluate'),
+                array('iHanoi', 'http://www.matematica.br/ihanoi', '3.1.0', 'Java', '{"en":"The Objective to move N discs from stick A to C, following some rule (from the game Towers of Hanoi)","pt_br":"O objetivo é mover N discos da haste A para C, seguindo algumas regras (implementa o jogo Torres de Hanói)"}', 'ihn', 'ilm/iHanoi/3.1.0/iHanoi.jar', 'ihanoi.iHanoi', 730, 450, 1, time(), $USER->id, time(), 1)),
+        // Risco 2
+        array_combine(
+                array('name', 'url', 'version', 'type', 'description', 'extension', 'file_jar', 'file_class', 'width', 'height', 'enable', 'timemodified', 'author', 'timecreated', 'evaluate'),
+                array('Risko', 'http://risko.pcc.usp.br/', '2.2.23', 'Java', '{"en":"Interactive computational tool for teaching geometry","pt_br":"Ferramenta computacional interativa para o ensino de geometria"}', 'rsk', 'ilm/Risko/2.2.23/Risko.jar', 'RiskoApplet.class', 800, 600, 1, time(), $USER->id, time(), 0)),
+        // iVProgH5 0.1 - HTML5
+        array_combine(
+                 array('name', 'url', 'version', 'type', 'description', 'extension', 'file_jar', 'file_class', 'width', 'height', 'enable', 'timemodified', 'author', 'timecreated', 'evaluate'), 
+                 array('iVProgH5', 'http://www.matematica.br/ivprogh5', '0.1.0', 'HTML5', '{"en":"Visual Interactive Programming on the Internet HTML5","pt_br":"Programação visual interativa na Internet"}', 'ivph', 'ilm/iVProgH5/0.1.0/ivprog-html/', 'main.html', 800, 600, 1, time(), $USER->id, time(), 1)),
+        // fractions 0.1.2017.11.22 - HTML5
+        array_combine(
+                 array('name', 'url', 'version', 'type', 'description', 'extension', 'file_jar', 'file_class', 'width', 'height', 'enable', 'timemodified', 'author', 'timecreated', 'evaluate'), 
+                 array('iFractions', 'http://www.matematica.br/ifractions', '0.1.2017.11.22', 'HTML5', '{"en":"Visual Interactive Fractions Learning","pt_br":"Aprendizagem visual interativa de frações"}', 'frc', 'ilm/iFractions/0.1.2017.11.22/ifractions/', 'index.html', 1000, 600, 1, time(), $USER->id, time(), 1))
+          );
+
+      foreach ($records as $record) {
+
+        // Verify if there is a iLM register to update it
+        $iassign_ilm = $DB->get_record('iassign_ilm', array('name' => $record['name'], 'version' => $record['version']));
+
+        if ($iassign_ilm) {
+          // Update file_jar and file_class
+          $newentry = new stdClass();
+          $newentry->id = $iassign_ilm->id;
+          $newentry->file_jar = $record['file_jar'];
+          $newentry->file_class = $record['file_class'];
+
+          $DB->update_record("iassign_ilm", $newentry);
+        } else {
+          // If not found a iLM with the same name and version, search a
+          // different version, to use as parent of new version
+
+          $iassign_ilm_parent = $DB->get_record('iassign_ilm', array('name' => $record['name'], 'parent' => 0));
+
+          if ($iassign_ilm_parent) {
+            $record['parent'] = $iassign_ilm_parent->id;
+            $DB->insert_record('iassign_ilm', $record, false); // insert with parent
+          } else {
+            $DB->insert_record('iassign_ilm', $record, false); // insert new iLM in the table '*_iassign_ilm' without a parent
+          }
+        }
+        
+      } // foreach ($records as $record)
+      
+    } // if ($oldversion < 2018031000)
+
+    
+
   // log event -----------------------------------------------------
   if (class_exists('plugin_manager'))
     $pluginman = plugin_manager::instance();
@@ -224,4 +351,4 @@ function xmldb_iassign_upgrade ($oldversion) {
   // log event -----------------------------------------------------
 
   return true;
-  }
+  }

+ 203 - 208
iassign_form.php

@@ -6,20 +6,19 @@
  * 
  * Release Notes:
  * - v 1.5 2013/09/19
- * 		+ Insert function for validation form (mod_iassign_form::validation).
- * 		+ Fix bugs in download exercise file.
+ *   + Insert function for validation form (mod_iassign_form::validation).
+ *   + Fix bugs in download exercise file.
  * - v 1.4 2013/08/21
- * 		+ Change title link with message for get file for donwload file.
+ *   + Change title link with message for get file for donwload file.
  * - v 1.3 2013/08/15
- * 		+ Change view file for allow download file.
+ *   + Change view file for allow download file.
  * - v 1.2 2013/08/01
- * 		+ Fix error in sql query for var $igeom.
+ *   + Fix error in sql query for var $igeom.
  * - v 1.1 2013/07/12
- * 		+ Fix error messages of 'setType' in debug mode for hidden fields.
+ *   + Fix error messages of 'setType' in debug mode for hidden fields.
  * 
  * @author Patricia Alves Rodrigues
  * @author Leônidas O. Brandão
- * @author Luciano Oliveira Borges
  * @version v 1.5 2013/09/19
  * @package mod_iassign
  * @since 2010/09/27
@@ -28,234 +27,227 @@
  * <b>License</b> 
  *  - http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
-/**
- * Moodle core defines constant MOODLE_INTERNAL which shall be used to make sure that the script is included and not called directly.
- */
-if(!defined('MOODLE_INTERNAL')) {
+
+
+// Moodle core defines constant MOODLE_INTERNAL which shall be used to make sure that the script is included and not called directly.
+if (!defined('MOODLE_INTERNAL')) {
   die('Direct access to this script is forbidden.');    ///  It must be included from a Moodle page
-}
+  }
 
-require_once ($CFG->libdir . '/formslib.php');
-require_once ($CFG->dirroot . '/course/moodleform_mod.php');
-require_once ($CFG->dirroot . '/mod/iassign/lib.php');
+require_once($CFG->libdir . '/formslib.php');
+require_once($CFG->dirroot . '/course/moodleform_mod.php');
+require_once($CFG->dirroot . '/mod/iassign/lib.php');
 
-/**
- * This class create form based moodleform.
- * @see moodleform
- */
+
+/// This class create form based moodleform.
+//  @see moodleform
 class mod_iassign_form extends moodleform {
 
-  /**
-   * Add elements to form
-   */
+  /// Add elements to form
   function definition () {
     global $CFG, $COURSE, $USER, $DB;
     $mform = & $this->_form;
     $instance = $this->_customdata;
 
+    // iGeom has special parameter 'script'
     $params = array('name' => '%iGeom%', 'parent' => 0);
-    $igeom = $DB->get_records_sql('SELECT s.id, s.name, s.parent 
-              							FROM {iassign_ilm} s
-              							WHERE s.name LIKE :name AND s.parent = :parent', $params);
-
+    $igeom = $DB->get_records_sql(
+      "SELECT s.id, s.name, s.parent FROM {iassign_ilm} s
+       WHERE s.name LIKE :name AND s.parent = :parent", $params);
     $id = $COURSE->cm;
     foreach ($igeom as $item)
-      $idigeom = $item->id;
-    
-    $tmps = $DB->get_records('iassign_ilm', array('enable' => 1));
+      $idigeom = $item->id; // get the last id of iGeom
+
+    $all_ilm = $DB->get_records('iassign_ilm', array('enable' => 1)); // or use ./lib.php function: $all_ilm = search_iLM(1);
     $iassigns = $DB->get_records('iassign_statement', array('iassignid' => $COURSE->iassignid));
 
-    if($tmps) {
+    if ($all_ilm) {
       $ids = "";
       $names = "";
       $evaluates = "";
-      foreach ($tmps as $tmp) {
-        $ids .="'" . $tmp->id . "',";
-        $names .="'" . $tmp->name . "',";
-        $evaluates .="'" . $tmp->evaluate . "',";
+      foreach ($all_ilm as $one_ilm) {
+        $ids .= "'" . $one_ilm->id . "',";
+        $names .= "'" . $one_ilm->name . "',";
+        $evaluates .= "'" . $one_ilm->evaluate . "',";
+        }
+      $ids .= "'0'";
+      $evaluates .= "'0'";
       }
-      $ids .="'0'";
-      $evaluates .="'0'";
-    }
     $name_iassigns = "";
-    if($iassigns) {
+    if ($iassigns) {
       foreach ($iassigns as $iassign) {
-        $name_iassigns .="'" . $iassign->name . "',";
+        $name_iassigns .= "'" . $iassign->name . "',";
+        }
       }
-    }
-    $name_iassigns .="''";
+    $name_iassigns .= "''";
 
     $error_name = get_string('error_iassign_name', 'iassign');
 
-    /// @todo Código Javascript, verificar alternativa.
+    // @todo Código Javascript, verificar alternativa.
     $code_javascript = "
-             <script type='text/javascript'>
-             //<![CDATA[
-        
-              var i;
-              var ids = new Array($ids);
-              var evaluates = new Array($evaluates);
-        
-              document.forms['mform1'].filename.disabled=1;  
-                
-              if(document.forms['mform1'].type_iassign.value==1){
-                 document.forms['mform1'].grade.style.display='none';
-                 document.forms['mform1'].max_experiment.style.display='none';
-              }else{
-                 document.forms['mform1'].grade.style.display='block';
-                 document.forms['mform1'].max_experiment.style.display='block';
+  <script type='text/javascript'>
+  //<![CDATA[
+
+   var i;
+   var ids = new Array($ids);
+   var evaluates = new Array($evaluates);
+
+   document.forms['mform1'].filename.disabled=1;  
+
+   if (document.forms['mform1'].type_iassign.value==1) {
+     document.forms['mform1'].grade.style.display='none';
+     document.forms['mform1'].max_experiment.style.display='none';
+   } else {
+     document.forms['mform1'].grade.style.display='block';
+     document.forms['mform1'].max_experiment.style.display='block';
+     }
+
+  for (i=0;i<ids.length;i++) {
+    if (ids[i]==document.forms['mform1'].iassign_ilmid.value && evaluates[i]==0) {
+      document.forms['mform1'].automatic_evaluate.style.display='none';
+      document.forms['mform1'].show_answer.style.display='none';
+      //document.forms['mform1'].automatic_evaluate.disabled=1;
+      // document.forms['mform1'].show_answer.disabled=1;
+      }
+    }
+
+  if (document.forms['mform1'].iassign_ilmid.value==" . $idigeom .") { // iGeom has special parameter 'script'
+    document.forms['mform1'].special_param1.style.display='block';
+    document.forms['mform1'].special_param1.disabled=0;
+    }
+  else {
+    document.forms['mform1'].special_param1.style.display='none';
+    document.forms['mform1'].special_param1.value=0;
+    document.forms['mform1'].special_param1.disabled=1;
+    }
+
+  function confirm_name (name) {
+    var i;
+    var names = new Array($name_iassigns);
+    for (i=0;i<names.length;i++) {
+       if (names[i]==name)
+         alert('" . $error_name . "');
+       }
+    }
+
+  function config_ilm (id) {
+    if (id==$idigeom) {
+      document.forms['mform1'].special_param1.style.display='block';
+      document.forms['mform1'].special_param1.disabled=0;
+      }
+    else {
+      document.forms['mform1'].special_param1.style.display='none';
+      document.forms['mform1'].special_param1.value=0;
+      document.forms['mform1'].special_param1.disabled=1;
+      }
+    var i;
+    var ids = new Array($ids);
+    var evaluates = new Array($evaluates);
+    if (document.forms['mform1'].type_iassign.value==1) {
+      document.forms['mform1'].automatic_evaluate.disabled=1;
+      document.forms['mform1'].show_answer.disabled=1;
+      document.forms['mform1'].automatic_evaluate.value=0;
+      document.forms['mform1'].show_answer.value=0;
+      }
+    else { // if (document.forms['mform1'].type_iassign.value==1)
+      for (i=0;i<ids.length;i++) {
+        if (ids[i]==id) {
+          if (document.forms['mform1'].action.value=='edit') {
+            if (evaluates[i]==0){
+              document.forms['mform1'].automatic_evaluate.style.display='none';
+              document.forms['mform1'].show_answer.style.display='none';
+              document.forms['mform1'].automatic_evaluate.disabled=1;
+              document.forms['mform1'].show_answer.disabled=1;
+              document.forms['mform1'].automatic_evaluate.value=0;
+              document.forms['mform1'].show_answer.value=0;
+              }
+            else {
+              document.forms['mform1'].automatic_evaluate.style.display='block';
+              document.forms['mform1'].show_answer.style.display='block';
+              document.forms['mform1'].automatic_evaluate.disabled=0;
+              document.forms['mform1'].show_answer.disabled=0;
+              document.forms['mform1'].automatic_evaluate.value=1;
+              document.forms['mform1'].show_answer.value=1;
               }
-        
-             for (i=0;i<ids.length;i++){
-                if(ids[i]==document.forms['mform1'].iassign_ilmid.value && evaluates[i]==0){
-                   document.forms['mform1'].automatic_evaluate.style.display='none';
-                   document.forms['mform1'].show_answer.style.display='none';
-                   //document.forms['mform1'].automatic_evaluate.disabled=1;
-                  // document.forms['mform1'].show_answer.disabled=1;
-                }
-             }
-
-             if (document.forms['mform1'].iassign_ilmid.value==$idigeom){
-                document.forms['mform1'].special_param1.style.display='block';
-                document.forms['mform1'].special_param1.disabled=0;
-             }
-             else{
-                document.forms['mform1'].special_param1.style.display='none';
-                document.forms['mform1'].special_param1.value=0;
-                document.forms['mform1'].special_param1.disabled=1;
-             }
-   
-           
-            function confirm_name(name){
-              var i;
-              var names = new Array($name_iassigns);
-              for (i=0;i<names.length;i++){
-                    if(names[i]==name)
-                       alert('" . $error_name . "');
-               }  
-            }
-        
-            function config_ilm(id){
-                
-             if (id==$idigeom){
-                document.forms['mform1'].special_param1.style.display='block';
-                document.forms['mform1'].special_param1.disabled=0;
-                }
-             else{
-                document.forms['mform1'].special_param1.style.display='none';
-                document.forms['mform1'].special_param1.value=0;
-                document.forms['mform1'].special_param1.disabled=1;
-               }
-               var i;
-               var ids = new Array($ids);
-               var evaluates = new Array($evaluates);
-                 if(document.forms['mform1'].type_iassign.value==1){
-                         document.forms['mform1'].automatic_evaluate.disabled=1;
-                         document.forms['mform1'].show_answer.disabled=1;
-                         document.forms['mform1'].automatic_evaluate.value=0;
-                         document.forms['mform1'].show_answer.value=0;
-                 }
-                 else{
-                 for (i=0;i<ids.length;i++){
-                    if(ids[i]==id){
-        		            if(document.forms['mform1'].action.value=='edit'){
-                            if (evaluates[i]==0){
-                              document.forms['mform1'].automatic_evaluate.style.display='none';
-                              document.forms['mform1'].show_answer.style.display='none';
-                              document.forms['mform1'].automatic_evaluate.disabled=1;
-                              document.forms['mform1'].show_answer.disabled=1;
-                              document.forms['mform1'].automatic_evaluate.value=0;
-                              document.forms['mform1'].show_answer.value=0;
-                            }
-                            else
-                            {
-                              document.forms['mform1'].automatic_evaluate.style.display='block';
-                              document.forms['mform1'].show_answer.style.display='block';
-                              document.forms['mform1'].automatic_evaluate.disabled=0;
-                              document.forms['mform1'].show_answer.disabled=0;
-                              document.forms['mform1'].automatic_evaluate.value=1;
-                              document.forms['mform1'].show_answer.value=1;
-                            }
-                       }
-
-                       if(document.forms['mform1'].action.value=='add'){
-                            if (evaluates[i]==0){
-                              document.forms['mform1'].automatic_evaluate.style.display='none';
-                              document.forms['mform1'].show_answer.style.display='none';
-                              document.forms['mform1'].automatic_evaluate.disabled=1;
-                              document.forms['mform1'].show_answer.disabled=1;
-                              document.forms['mform1'].automatic_evaluate.value=0;
-                              document.forms['mform1'].show_answer.value=0;
-                            }
-                            else
-                            {
-                              document.forms['mform1'].automatic_evaluate.style.display='block';
-                              document.forms['mform1'].show_answer.style.display='block';
-                              document.forms['mform1'].automatic_evaluate.disabled=0;
-                              document.forms['mform1'].show_answer.disabled=0;
-                              document.forms['mform1'].automatic_evaluate.value=1;
-                              document.forms['mform1'].show_answer.value=1;
-                            }
-                        }
-                    }
-                   }
-                 }
             }
 
-           function disable_answer(resp){
-             if (resp==0){
-                document.forms['mform1'].show_answer.value=0;
-                document.forms['mform1'].show_answer.disabled=1;
-             }
-             else{
-                document.forms['mform1'].show_answer.disabled=0;
-             }
-           }
-        
-          function view_ilm_manager(){
-             document.forms['mform1'].filename.disabled=1;    
-	     open_ilm_manager=window.open('$CFG->wwwroot/mod/iassign/ilm_manager.php?id=$COURSE->id&from=iassign&ilmid='+document.forms['mform1'].iassign_ilmid.value,'','width=1000,height=880,menubar=0,location=0,scrollbars,status,fullscreen,resizable');
-	  }
-          //]]>
-          </script>";
-
+          if (document.forms['mform1'].action.value=='add') {
+            if (evaluates[i]==0) {
+              document.forms['mform1'].automatic_evaluate.style.display='none';
+              document.forms['mform1'].show_answer.style.display='none';
+              document.forms['mform1'].automatic_evaluate.disabled=1;
+              document.forms['mform1'].show_answer.disabled=1;
+              document.forms['mform1'].automatic_evaluate.value=0;
+              document.forms['mform1'].show_answer.value=0;
+              }
+            else {
+              document.forms['mform1'].automatic_evaluate.style.display='block';
+              document.forms['mform1'].show_answer.style.display='block';
+              document.forms['mform1'].automatic_evaluate.disabled=0;
+              document.forms['mform1'].show_answer.disabled=0;
+              document.forms['mform1'].automatic_evaluate.value=1;
+              document.forms['mform1'].show_answer.value=1;
+              }
+            }
+          } // if (ids[i]==id)
+        } // for (i=0;i<ids.length;i++)
+      } // else if (document.forms['mform1'].type_iassign.value==1)
+    } // function config_ilm(id)
+
+  function disable_answer (resp) {
+    if (resp==0) {
+      document.forms['mform1'].show_answer.value=0;
+      document.forms['mform1'].show_answer.disabled=1;
+      }
+    else {
+      document.forms['mform1'].show_answer.disabled=0;
+      }
+    }
 
+  function view_ilm_manager () {
+    document.forms['mform1'].filename.disabled=1;
+    open_ilm_manager=window.open('$CFG->wwwroot/mod/iassign/ilm_manager.php?id=$COURSE->id&from=iassign&ilmid='+document.forms['mform1'].iassign_ilmid.value,'','width=1000,height=880,menubar=0,location=0,scrollbars,status,fullscreen,resizable');
+    }
+  //]]>
+  </script>";
 
     //-------------------------------------------------------------------------------
-    /// Adding the "title_type_iassign" fieldset, where all the common settings are showed
+    // Adding the "title_type_iassign" fieldset, where all the common settings are showed
 
     $mform->addElement('header', 'title_type_iassign', get_string('type_iassign', 'iassign'));
     $type_iassign = array();
     $type_iassign[1] = get_string('example', 'iassign');
     $type_iassign[2] = get_string('test', 'iassign');
     $type_iassign[3] = get_string('exercise', 'iassign');
-
+      
     $mform->addElement('select', 'type_iassign', get_string('choose_type_activity', 'iassign'), $type_iassign, array('onChange' => 'config_type(this.value);'));
     $mform->setDefault('type_iassign', 3); // default type_iassign = 3
     $mform->addHelpButton('type_iassign', 'helptypeiassign', 'iassign');
     //-------------------------------------------------------------------------------
-    /// Adding the "data_activity" fieldset, where all the common settings are showed
+    // Adding the "data_activity" fieldset, where all the common settings are showed
 
     $mform->addElement('header', 'data_activity', get_string('data_activity', 'iassign'));
     $mform->addElement('static', 'author', get_string('author_id', 'iassign'));
     $mform->addElement('static', 'author_modified', get_string('author_id_modified', 'iassign'));
 
-    /// Adding the standard "name" field
+    // Adding the standard "name" field
     $mform->addElement('text', 'name', get_string('iassigntitle', 'iassign'), array('size' => '55', 'onChange' => 'confirm_name(this.value);'));
     $mform->setType('name', PARAM_TEXT);
     $mform->addRule('name', get_string('required', 'iassign'), 'required');
 
-    /// Adding the standard "proposition" field
+    // Adding the standard "proposition" field
     $mform->addElement('htmleditor', 'proposition', get_string('proposition', 'iassign'));
     $mform->setType('proposition', PARAM_RAW);
     $mform->addRule('proposition', get_string('required', 'iassign'), 'required');
 
-    ///-----------------------------------------------------------------------------
-    /// Adding the "interactivy_learning_module" fieldset, where all the common settings are showed
+    //-----------------------------------------------------------------------------
+    // Adding the "interactivy_learning_module" fieldset, where all the common settings are showed
     $mform->addElement('header', 'interactivy_learning_module', get_string('interactivy_learning_module', 'iassign'));
     //$mform->setExpanded('interactivy_learning_module');
-    // Search imas registered in the database
-    $ilms = search_iLM(1);
+
+    // Search iLM registered in the database
+    // $ilms = search_iLM(1);
+    $ilms = $all_ilm;
 
     $applets = array();
     foreach ($ilms as $ilm)
@@ -265,19 +257,19 @@ class mod_iassign_form extends moodleform {
 
     $fileurl = "";
     $filename = "";
-    if(!is_null($COURSE->iassign_file_id)) {
+    if (!is_null($COURSE->iassign_file_id)) {
       $fs = get_file_storage();
       $file = $fs->get_file_by_id($COURSE->iassign_file_id);
-      $fileurl = "{$CFG->wwwroot}/pluginfile.php/{$file->get_contextid()}/mod_iassign/exercise" . '/' . $file->get_itemid() . $file->get_filepath() . $file->get_filename();
+      $fileurl = $CFG->wwwroot . "/pluginfile.php/" . $file->get_contextid() . "/mod_iassign/exercise" . '/' . $file->get_itemid() . $file->get_filepath() . $file->get_filename();
       $filename = $file->get_filename();
-    }
-    echo "123";
+      }
+    //D echo "123";
     $html_div = '<div id="fitem_id_iassign_file_id" class="fitem required fitem_fgroup">';
     $html_div .= '<div class="fitemtitle"><label for="id_iassign_file_id">' . get_string('choose_file', 'iassign');
     $html_div .= '<img class="req" title="' . get_string('requiredelement', 'form') . '" alt="' . get_string('requiredelement', 'form') . '" src="' . $CFG->wwwroot . '/theme/image.php/standard/core/1379534589/req"></label></div>';
     $html_div .= '<div class="felement fselect">';
     $html_div .= '<span id="iassign_file_link" style="color:#000000;"><a href="' . $fileurl . '" target="_blank" title="' . get_string('download_file', 'iassign') . $filename . '">' . $filename . '</a></span>';
-    if($fileurl != "")
+    if ($fileurl != "")
       $html_div .= '&nbsp;&nbsp;&nbsp;';
     $html_div .= '<input onclick="view_ilm_manager()" name="add_ilm" value="' . get_string('add_ilm', 'iassign') . '" type="button" id="id_add_ilm"/>';
     $html_div .= '</div>';
@@ -289,7 +281,7 @@ class mod_iassign_form extends moodleform {
     $mform->setDefault('special_param1', 0);
     $mform->addHelpButton('special_param1', 'helpspecial_param', 'iassign');
 
-    ///-----------------------------------------------------------------------------
+    //-----------------------------------------------------------------------------
     //Applies only when the iLM is automatic evaluate.
     $mform->addElement('header', 'id_automatic_evaluate', get_string('only_automatic_evaluate', 'iassign'));
 
@@ -297,7 +289,7 @@ class mod_iassign_form extends moodleform {
     $mform->addElement('selectyesno', 'automatic_evaluate', get_string('automatic_evaluate', 'iassign'), array('onChange' => 'disable_answer(this.value);'));
     $mform->disabledIf('automatic_evaluate', 'type_iassign', 'eq', 1); //activity does not display if the type example
     $mform->setDefault('automatic_evaluate', 0);
-    /// @todo Ver código comentado
+    // @todo Ver código comentado
     //$mform->addHelpButton('automatic_evaluate', 'helpautomatic_evaluate', 'iassign');
     //Show automatic evaluation results to students? 0 - no / 1 - yes
     $mform->addElement('selectyesno', 'show_answer', get_string('show_answer', 'iassign'));
@@ -305,17 +297,18 @@ class mod_iassign_form extends moodleform {
     // $mform->disabledIf('show_answer', 'automatic_evaluate', 'neq', 0);
     $mform->setDefault('show_answer', 0);
     //$mform->addHelpButton('show_answer', 'helpshow_answer', 'iassign');
-    ///-----------------------------------------------------------------------------
-    /// Adding the "duration_activity" fieldset, where all the common settings are showed
+
+    //-----------------------------------------------------------------------------
+    // Adding the "duration_activity" fieldset, where all the common settings are showed
     $mform->addElement('header', 'duration_activity', get_string('duration_activity', 'iassign'));
 
     $mform->addElement('date_time_selector', 'timeavailable', get_string('availabledate', 'iassign'));
     $mform->setDefault('timeavailable', time());
-    $mform->disabledIf('timeavailable', 'type_iassign', 'eq', 1); ///activity does not display if the type example
+    $mform->disabledIf('timeavailable', 'type_iassign', 'eq', 1); // activity does not display if the type example
     $mform->addElement('date_time_selector', 'timedue', get_string('duedate', 'iassign'));
     $mform->setDefault('timedue', time() + 7 * 24 * 3600);
     $mform->disabledIf('timedue', 'type_iassign', 'eq', 1); //activity does not display if the type example
-    //
+
     //Allow sending late? 0 - no or unlocked / 1 - yes or locked
     $mform->addElement('selectyesno', 'preventlate', get_string('preventlate', 'iassign'));
     $mform->setDefault('preventlate', 0);
@@ -330,7 +323,7 @@ class mod_iassign_form extends moodleform {
 
     $mform->disabledIf('test', 'type_iassign', 'eq', 1); //activity does not display if the type example
     $mform->disabledIf('test', 'type_iassign', 'eq', 2); //activity does not display if the type test
-    ///--------------
+    //--------------
     $mform->addElement('header', 'op_val', get_string('op_val', 'iassign'));
 
     $mform->addElement('modgrade', 'grade', get_string('grade', 'iassign'));
@@ -348,22 +341,22 @@ class mod_iassign_form extends moodleform {
     $mform->disabledIf('max_experiment', 'type_iassign', 'eq', 1); //activity does not display if the type example
     $mform->disabledIf('max_experiment', 'type_iassign', 'eq', 2); //activity does not display if the type test
 
-    if($COURSE->iassign_list) {
-      ///-------------- dependency
+    if ($COURSE->iassign_list) {
+      //-------------- dependency
       $mform->addElement('header', 'headerdependency', get_string('dependency', 'iassign'));
       $mform->addHelpButton('headerdependency', 'helpdependency', 'iassign');
 
       foreach ($COURSE->iassign_list as $iassign) {
         $tmp = 'iassign_list[' . $iassign->id . ']';
-        if($iassign->enable == 1)
+        if ($iassign->enable == 1)
           $mform->addElement('checkbox', $tmp, $iassign->name);
-      } //foreach ($COURSE->iassign_list as $iassign)
-    } //if ($COURSE->iassign_list)
+        } //foreach ($COURSE->iassign_list as $iassign)
+      } //if ($COURSE->iassign_list)
 
     $mform->addElement('hidden', 'dependency');
     $mform->setType('dependency', PARAM_RAW);
 
-    ///-------------- config
+    //-------------- config
     $mform->addElement('header', 'config', get_string('general', 'iassign'));
     $visibleoptions = array(1 => get_string('show'), 0 => get_string('hide'));
 
@@ -400,7 +393,9 @@ class mod_iassign_form extends moodleform {
     $mform->addElement('html', $code_javascript);
     // add standard elements, common to all modules
     $this->add_action_buttons();
-  }
+
+    } // function definition()
+
 
   function validation ($data, $files) {
     global $COURSE, $DB;
@@ -408,27 +403,27 @@ class mod_iassign_form extends moodleform {
     $mform = & $this->_form;
     $errors = array();
 
-    if($mform->elementExists('name')) {
+    if ($mform->elementExists('name')) {
       $value = trim($data['name']);
-      if($value == '') {
+      if ($value == '') {
         $errors['name'] = get_string('required', 'iassign');
+        }
       }
-    }
 
-    if($mform->elementExists('proposition')) {
+    if ($mform->elementExists('proposition')) {
       $value = trim($data['proposition']);
-      if($value == '') {
+      if ($value == '') {
         $errors['proposition'] = get_string('required', 'iassign');
+        }
       }
-    }
 
-    if($mform->elementExists('file')) {
+    if ($mform->elementExists('file')) {
       $value = trim($data['file']);
-      if($value == 0) {
+      if ($value == 0) {
         $errors['iassign_ilmid'] = get_string('required_iassign_file', 'iassign');
+        }
       }
-    }
     return $errors;
-  }
+    } // function validation($data, $files)
 
-}
+  } // class mod_iassign_form extends moodleform

ilm/Risko.jar → ilm/Risko/2.2.23/Risko.jar


ilm/iComb.jar → ilm/iComb/0.9.5/iComb.jar


ilm/ifractions/css/bootstrap-theme.css → ilm/iFractions/0.1.2017.11.22/ifractions/css/bootstrap-theme.css


ilm/ifractions/css/bootstrap-theme.css.map → ilm/iFractions/0.1.2017.11.22/ifractions/css/bootstrap-theme.css.map


ilm/ifractions/css/bootstrap-theme.min.css → ilm/iFractions/0.1.2017.11.22/ifractions/css/bootstrap-theme.min.css


ilm/ifractions/css/bootstrap-theme.min.css.map → ilm/iFractions/0.1.2017.11.22/ifractions/css/bootstrap-theme.min.css.map


ilm/ifractions/css/bootstrap.css → ilm/iFractions/0.1.2017.11.22/ifractions/css/bootstrap.css


ilm/ifractions/css/bootstrap.css.map → ilm/iFractions/0.1.2017.11.22/ifractions/css/bootstrap.css.map


ilm/ifractions/css/bootstrap.min.css → ilm/iFractions/0.1.2017.11.22/ifractions/css/bootstrap.min.css


ilm/ifractions/css/bootstrap.min.css.map → ilm/iFractions/0.1.2017.11.22/ifractions/css/bootstrap.min.css.map


ilm/ifractions/css/jquery-ui.css → ilm/iFractions/0.1.2017.11.22/ifractions/css/jquery-ui.css


File diff suppressed because it is too large
+ 1 - 0
ilm/iFractions/0.1.2017.11.22/ifractions/css/jquery.modal.min.css


ilm/ifractions/eindex.php → ilm/iFractions/0.1.2017.11.22/ifractions/eindex.php


ilm/ifractions/fonts/glyphicons-halflings-regular.eot → ilm/iFractions/0.1.2017.11.22/ifractions/fonts/glyphicons-halflings-regular.eot


ilm/ifractions/fonts/glyphicons-halflings-regular.svg → ilm/iFractions/0.1.2017.11.22/ifractions/fonts/glyphicons-halflings-regular.svg


ilm/ifractions/fonts/glyphicons-halflings-regular.ttf → ilm/iFractions/0.1.2017.11.22/ifractions/fonts/glyphicons-halflings-regular.ttf


ilm/ifractions/fonts/glyphicons-halflings-regular.woff → ilm/iFractions/0.1.2017.11.22/ifractions/fonts/glyphicons-halflings-regular.woff


ilm/ifractions/fonts/glyphicons-halflings-regular.woff2 → ilm/iFractions/0.1.2017.11.22/ifractions/fonts/glyphicons-halflings-regular.woff2


+ 143 - 36
ilm/ifractions/index.html

@@ -5,9 +5,11 @@
         <title> iFractions </title>
         <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
         <link rel="stylesheet" type="text/css"  href="css/jquery-ui.css">
+        <link rel="stylesheet" type="text/css"  href="css/jquery.modal.min.css">
         <script type="text/javascript" src="js/phaser.min.js"></script>
         <script type="text/javascript" src="js/jquery.js"></script>
         <script type="text/javascript" src="js/jquery-ui.js"></script>
+        <script type="text/javascript" src="js/jquery.modal.min.js"></script>
         <script type="text/javascript" src="js/boot.js"></script>
         <script type="text/javascript" src="js/menu.js"></script>
         <script type="text/javascript" src="js/circleOne.js"></script>
@@ -20,44 +22,65 @@
                 return match ? decodeURIComponent(match[1].replace(/\+/g, ' ')) : null;
             }
             function getAnswer() {
-                console.log("getAnswer:: called");
-                if (modulo < 1) {
-                    alert(words.error_module);
-                    return x;
-                }
-                if (difficulty < 1) {
-                    alert(words.error_difficulty);
-                    return x;
-                }
-                if (num < 5) {
-                    return '{'
-                            + '"shape": "' + (modules_names[modulo].split(",")[0] === words.square_name ? "Square" : "Circle")
-                            + '", "modo": "' + modos[modulo]
-                            + '", "label": "' + labels[modulo]
-                            + '", "operator": "' + (operation == 1 ? "Plus" : (operation == 2 ? "Minus" : (operation == 3 ? "Mixed" : "Equals")))
-                            + '", "difficulty": "' + difficulty
-                            + '", "num": "' + num
-                            + '"}';
+                if (iLMparameters.iLM_PARAM_SendAnswer == 'false') {
+                    var str = "{"
+                            + '"shape": "' + jogo.shape
+                            + '", "modo": "' + jogo.modo
+                            + '", "label": "' + jogo.label
+                            + '", "operator": "' + jogo.operator
+                            + '", "difficulty": "' + jogo.difficulty
+                            + '", "num": "' + jogo.num
+                            + '", "results": {';
+                    for (j = 0; j < iterator; j++) {
+                        str += '"' + (j + 1) + '": { "phase": "' + (j + 1)
+                                + '", "hits": "' + hits[j]
+                                + '", "errors": "' + errors[j]
+                                + '", "start": "' + start[j]
+                                + '", "end": "' + end[j]
+                                + '" }' + ((j + 1 < iterator) ? "," : "");
+                    }
+                    str += "}}";
+                    return str;
                 } else {
-                    return '{'
-                            + '"shape": "' + (modules_names[modulo].split(",")[0] === words.square_name ? "Square" : "Circle")
-                            + '", "modo": "' + (operation == 1 ? "A" : (operation == 2 ? "B" : "C"))
-                            + '", "label": "' + labels[modulo]
-                            + '", "operator": "' + (operation == 1 ? "Plus" : (operation == 2 ? "Minus" : (operation == 3 ? "Mixed" : "Equals")))
-                            + '", "difficulty": "' + difficulty
-                            + '", "num": "' + num
-                            + '"}';
+                    console.log("getAnswer:: called");
+                    if (modulo < 1) {
+                        alert(words.error_module);
+                        return x;
+                    }
+                    if (difficulty < 1) {
+                        alert(words.error_difficulty);
+                        return x;
+                    }
+                    if (num < 5) {
+                        return '{'
+                                + '"shape": "' + (modules_names[modulo].split(",")[0] === words.square_name ? "Square" : "Circle")
+                                + '", "modo": "' + modos[modulo]
+                                + '", "label": "' + labels[modulo]
+                                + '", "operator": "' + (operation == 1 ? "Plus" : (operation == 2 ? "Minus" : (operation == 3 ? "Mixed" : "Equals")))
+                                + '", "difficulty": "' + difficulty
+                                + '", "num": "' + num
+                                + '"}';
+                    } else {
+                        return '{'
+                                + '"shape": "' + (modules_names[modulo].split(",")[0] === words.square_name ? "Square" : "Circle")
+                                + '", "modo": "' + (operation == 1 ? "A" : (operation == 2 ? "B" : "C"))
+                                + '", "label": "' + labels[modulo]
+                                + '", "operator": "' + (operation == 1 ? "Plus" : (operation == 2 ? "Minus" : (operation == 3 ? "Mixed" : "Equals")))
+                                + '", "difficulty": "' + difficulty
+                                + '", "num": "' + num
+                                + '"}';
+                    }
                 }
             }
             function getEvaluation() {
                 console.log("getEvaluation:: called");
-                //return false;
-                //return angular.element("#commCtrl").scope().getEvaluation();
+                getEvaluationCallback(1); // verificar com o professor:: uma fórmula para compor a nota do aluno
             }
             function getEvaluationCallback(nota) {
                 console.log("getEvaluationCallback:: called");
-                return false;
-                //parent.getEvaluationCallback(nota);
+                if (iLMparameters.iLM_PARAM_SendAnswer == 'false') {
+                    parent.getEvaluationCallback(nota);
+                }
             }
             var iLMparameters = {
                 iLM_PARAM_ServerToGetAnswerURL: getParameterByName("iLM_PARAM_ServerToGetAnswerURL"),
@@ -145,13 +168,79 @@
                 font-size: 20px;
                 font-weight: bold;
             }
-            .results-levels-item, .results-levels {
-
+            .panel-body, .panel-primary {
+                padding: 0;
+                border: none;
+                height: auto;
+                width: auto;
+                margin: 0;
             }
             .results-levels-item {
                 margin-top: -70px;
                 margin-left: 75px;
             }
+            .container {    
+                width: auto;
+                padding: 0;
+                margin: 0;
+            }
+            .close-modal {
+                margin: 10px;
+            }
+            .modal-title {
+                text-align: center;
+                font-size: 24px;
+                font-weight: bold;
+            }
+            .modal-geral {
+                font-size: 16px;
+                margin: 10px;
+            }
+            .modal-coop {
+                padding: 5px;
+                border: 1px solid #4286f4;
+                background-color: #c5d9f9;
+                border-radius: 10px 10px 0 0;
+                margin-top: 10px;
+                font-weight: bold;
+            }
+            .modal-coop-content {
+                border: 1px solid #4286f4;
+                margin-top: -1px;
+                padding: 5px;
+                border-radius: 0 0 10px 10px;
+            }
+            .modal-based {
+                padding: 5px;
+                border: 1px solid #ff5e5e;
+                background-color: #f9dbdb;
+                border-radius: 10px 10px 0 0;
+                margin-top: 10px;
+                font-weight: bold;
+            }
+            .modal-based-content {
+                border: 1px solid #ff5e5e;
+                margin-top: -1px;
+                padding: 5px;
+                border-radius: 0 0 10px 10px;
+            }
+            .modal-tech {
+                padding: 5px;
+                border: 1px solid #109b0d;
+                background-color: #b6ffb5;
+                border-radius: 10px 10px 0 0;
+                margin-top: 10px;
+                font-weight: bold;
+            }
+            .modal-tech-content {
+                border: 1px solid #109b0d;
+                margin-top: -1px;
+                padding: 5px;
+                border-radius: 0 0 10px 10px;
+            }
+            .results-levels:hover {
+                background: #f5f5f5;
+            }
 
         </style>
     </head>
@@ -161,7 +250,7 @@
         <div class="container">
             <div class="clearfix"></div>
             <div class="panel panel-primary">
-                <div class="panel-heading">FRACTIONS GAME</div>
+                <!--<div class="panel-heading">FRACTIONS GAME</div>-->
                 <div class="panel-body">
                     <center>
                         <div id="fractions-game" style="padding: 0 auto 0 auto;">
@@ -378,6 +467,7 @@
                     </div>
                 </div>
             </div>
+            <!--
             <div class="panel panel-info">
                 <div class="panel-heading">COOPERATION TEAM</div>
                 <div class="panel-body">
@@ -413,6 +503,7 @@
                     </center>
                 </div>
             </div>
+            -->
         </div>
 
     </body>
@@ -424,10 +515,10 @@
         if (iLMparameters.iLM_PARAM_SendAnswer == 'false') {
             // Initialize the game
             var game = new Phaser.Game(900, 600, Phaser.CANVAS, 'fractions-game');
-            hip = "143.107.45.11"; //Host ip
-            name = ""; //player name
+            var hip = "143.107.45.11"; //Host ip
+            /*name = ""; //player name
             lang = ""; //language
-            var timer, totalTime;
+            var timer, totalTime;*/
             // Game One 
             onePosition = 0; //Map position
             oneMove = false; //Move to next position
@@ -491,6 +582,13 @@
 
                             dd += "<div class='results-levels-item'>" + words.results_start + ": " + timeConverter(results[i].start);
                             dd += " " + words.results_end + ": " + timeConverter(results[i].end);
+
+                            errors[i - 1] = results[i].errors;
+                            hits[i - 1] = results[i].hits;
+                            start[i - 1] = results[i].start;
+                            end[i - 1] = results[i].end;
+                            iterator++;
+
                             var temp = results[i].end - results[i].start;
                             dd += "<br>" + words.results_time + ": " + ("" + temp + "").toHHMMSS();
                             dd += "<br>" + words.results_hits + ": " + results[i].hits;
@@ -636,6 +734,15 @@
             var match = RegExp('[?&]' + name + '=([^&]*)').exec(parent.document.location.search);
             return match ? decodeURIComponent(match[1].replace(/\+/g, ' ')) : null;
         }
+        function showInfo() {
+            var html = "<div class='modal-geral'> <div class='modal-title'>iFractions</div>"
+                    + "<div class='modal-coop'>Cooperation Team</div> <div class='modal-coop-content'> BRAZIL: Leônidas de Oliveira Brandão (IME-USP)<br>"
+                    + "PERU: Manuel Ibarra and Cristhian Serrano (EAPIIS-UNAMBA)<br> FRANCE: Jean-Marc (MOCAH-UPMC) </div>"
+                    + "<div class='modal-based'>Based on</div><div class='modal-based-content'> iLM (interactive Learning Modules)<br>"
+                    + "Six facets of Serious Game Design:<br>Pedagogical Objectives; Domain Simulation; Interactions with the Simulation; Problems and Progression; Decorum and Conditions of Use."
+                    + "</div> <div class='modal-tech'> Technology </div> <div class='modal-tech-content'> We used HTML5, CSS and the Javascript Library Phaser.io </div> </div>";
+            $(html).appendTo('body').modal();
+        }
 
     </script>
 </html>

+ 1 - 1
ilm/ifractions/js/boot.js

@@ -108,7 +108,7 @@ var loadState = {
         game.load.image('back', baseimg+'menu/back.png');
         game.load.image('home', baseimg+'menu/home.png');
         game.load.image('info', baseimg+'menu/info.png');
-        game.load.image('world', baseimg+'menu/language.png');
+        game.load.image('about', baseimg+'menu/info.png');
         game.load.image('list', baseimg+'menu/menu.png');
         game.load.image('help', baseimg+'menu/help.png');
         game.load.image('pgbar', baseimg+'menu/progressBar.png');

+ 13 - 9
ilm/ifractions/js/circleOne.js

@@ -17,12 +17,13 @@ var menuCircleOne={
         m_info = game.add.text(14, 53, "", { font: "20px Arial", fill: "#330000", align: "center" });
           // Return to language button
         // Remove language icon ::Igor
-        /*m_world = game.add.sprite(10, 10, 'world'); 
+        m_world = game.add.sprite(10, 10, 'about'); 
         m_world.inputEnabled = true;
         m_world.input.useHandCursor = true;
-        m_world.events.onInputDown.add(this.loadState, {state: "boot", beep: beepSound});
+        m_world.events.onInputDown.add(showInfo);
         m_world.events.onInputOver.add(this.showOption, {message: words.menu_world});
-        m_world.events.onInputOut.add(this.showOption, {message: ""});*/
+        m_world.events.onInputOut.add(this.showOption, {message: ""});
+        
           // Return to menu button
         m_list = game.add.sprite(60, 10, 'list'); 
         m_list.inputEnabled = true;
@@ -172,6 +173,7 @@ var menuCircleOne={
         oneMove = true; //Move no next point
         oneDifficulty  = jogo.difficulty; //Number of difficulty (1 to 5)
         oneOperator = jogo.operator;
+        oneLabel = (jogo.label == 'true');
         game.state.start('mapCOne');
         /// ::Igor
         
@@ -222,12 +224,13 @@ var mapCircleOne={
             m_info = game.add.text(14, 53, "", { font: "20px Arial", fill: "#330000", align: "center" });
               // Return to language button
             // Remove language icon ::Igor
-            /*m_world = game.add.sprite(10, 10, 'world'); 
+            m_world = game.add.sprite(10, 10, 'about'); 
             m_world.inputEnabled = true;
             m_world.input.useHandCursor = true;
-            m_world.events.onInputDown.add(this.loadState, {state: "boot", beep: beepSound});
+            m_world.events.onInputDown.add(showInfo);
             m_world.events.onInputOver.add(this.showOption, {message: words.menu_world});
-            m_world.events.onInputOut.add(this.showOption, {message: ""});*/
+            m_world.events.onInputOut.add(this.showOption, {message: ""});
+            
               // Return to menu button
             m_list = game.add.sprite(60, 10, 'list'); 
             m_list.inputEnabled = true;
@@ -656,12 +659,13 @@ var gameCircleOne={
         if(oneMenu){
               // Return to language button
             // Remove language icon ::Igor
-            /*m_world = game.add.sprite(10, 10, 'world'); 
+            m_world = game.add.sprite(10, 10, 'about'); 
             m_world.inputEnabled = true;
             m_world.input.useHandCursor = true;
-            m_world.events.onInputDown.add(this.loadState, {state: "boot", beep: beepSound});
+            m_world.events.onInputDown.add(showInfo);
             m_world.events.onInputOver.add(this.showOption, {message: words.menu_world});
-            m_world.events.onInputOut.add(this.showOption, {message: ""});*/
+            m_world.events.onInputOut.add(this.showOption, {message: ""});
+            
               // Return to menu button
             m_list = game.add.sprite(60, 10, 'list'); 
             m_list.inputEnabled = true;

ilm/ifractions/js/jquery-ui.js → ilm/iFractions/0.1.2017.11.22/ifractions/js/jquery-ui.js


ilm/ifractions/js/jquery.js → ilm/iFractions/0.1.2017.11.22/ifractions/js/jquery.js


ilm/ifractions/js/jquery.min.js → ilm/iFractions/0.1.2017.11.22/ifractions/js/jquery.min.js


File diff suppressed because it is too large
+ 5 - 0
ilm/iFractions/0.1.2017.11.22/ifractions/js/jquery.modal.min.js


+ 2 - 2
ilm/ifractions/js/menu.js

@@ -29,12 +29,12 @@ var menuState={
           // Return to language button
         
         // Remove language icon ::Igor
-        /*m_world = game.add.sprite(10, 10, 'world'); 
+        m_world = game.add.sprite(10, 10, 'about'); 
         m_world.inputEnabled = true;
         m_world.input.useHandCursor = true;
         m_world.events.onInputDown.add(this.loadState, {state: "boot", beep: beepSound});
         m_world.events.onInputOver.add(this.showOption, {message: words.menu_world});
-        m_world.events.onInputOut.add(this.showOption, {message: ""});*/
+        m_world.events.onInputOut.add(this.showOption, {message: ""});
                 
         // List buttons
         menu1 = game.add.sprite(this.game.world.centerX + 10, this.game.world.centerY - 70, 'game1c');

ilm/ifractions/js/phaser.js → ilm/iFractions/0.1.2017.11.22/ifractions/js/phaser.js


ilm/ifractions/js/phaser.min.js → ilm/iFractions/0.1.2017.11.22/ifractions/js/phaser.min.js


+ 11 - 9
ilm/ifractions/js/squareOne.js

@@ -16,12 +16,13 @@ var menuSquareOne={
         m_info = game.add.text(14, 53, "", { font: "20px Arial", fill: "#330000", align: "center" });
           // Return to language button
         // Remove language icon ::Igor
-        /*m_world = game.add.sprite(10, 10, 'world'); 
+        m_world = game.add.sprite(10, 10, 'about'); 
         m_world.inputEnabled = true;
         m_world.input.useHandCursor = true;
-        m_world.events.onInputDown.add(this.loadState, {state: "boot", beep: beepSound});
+        m_world.events.onInputDown.add(showInfo);
         m_world.events.onInputOver.add(this.showOption, {message: words.menu_world});
-        m_world.events.onInputOut.add(this.showOption, {message: ""});*/
+        m_world.events.onInputOut.add(this.showOption, {message: ""});
+        
           // Return to menu button
         m_list = game.add.sprite(60, 10, 'list'); 
         m_list.inputEnabled = true;
@@ -128,6 +129,7 @@ var menuSquareOne={
         oneMove = true; //Move no next point
         oneDifficulty  = jogo.difficulty; //Number of difficulty (1 to 5)
         oneOperator = jogo.operator;
+        oneLabel = (jogo.label == 'true');
         game.state.start('mapSOne');
         /// ::Igor
         
@@ -179,12 +181,12 @@ var mapSquareOne={
             m_info = game.add.text(14, 53, "", { font: "20px Arial", fill: "#330000", align: "center" });
               // Return to language button
             // Remove language icon ::Igor
-            /*m_world = game.add.sprite(10, 10, 'world'); 
+            m_world = game.add.sprite(10, 10, 'about'); 
             m_world.inputEnabled = true;
             m_world.input.useHandCursor = true;
-            m_world.events.onInputDown.add(this.loadState, {state: "boot", beep: beepSound});
+            m_world.events.onInputDown.add(showInfo);
             m_world.events.onInputOver.add(this.showOption, {message: words.menu_world});
-            m_world.events.onInputOut.add(this.showOption, {message: ""});*/
+            m_world.events.onInputOut.add(this.showOption, {message: ""});
               // Return to menu button
             m_list = game.add.sprite(60, 10, 'list'); 
             m_list.inputEnabled = true;
@@ -642,12 +644,12 @@ var gameSquareOne={
             m_info = game.add.text(14, 53, "", { font: "20px Arial", fill: "#330000", align: "center" });
               // Return to language button
             // Remove language icon ::Igor
-            /*m_world = game.add.sprite(10, 10, 'world'); 
+            m_world = game.add.sprite(10, 10, 'about'); 
             m_world.inputEnabled = true;
             m_world.input.useHandCursor = true;
-            m_world.events.onInputDown.add(this.loadState, {state: "boot", beep: beepSound});
+            m_world.events.onInputDown.add(showInfo);
             m_world.events.onInputOver.add(this.showOption, {message: words.menu_world});
-            m_world.events.onInputOut.add(this.showOption, {message: ""});*/
+            m_world.events.onInputOut.add(this.showOption, {message: ""});
               // Return to menu button
             m_list = game.add.sprite(60, 10, 'list'); 
             m_list.inputEnabled = true;

+ 15 - 14
ilm/ifractions/js/squareTwo.js

@@ -14,12 +14,13 @@ var menuSquareTwo={
         m_info = game.add.text(14, 53, "", { font: "20px Arial", fill: "#330000", align: "center" });
           // Return to language button
         // Remove language icon ::Igor
-        /*m_world = game.add.sprite(10, 10, 'world'); 
+        m_world = game.add.sprite(10, 10, 'about'); 
         m_world.inputEnabled = true;
         m_world.input.useHandCursor = true;
-        m_world.events.onInputDown.add(this.loadState, {state: "boot", beep: beepSound});
+        m_world.events.onInputDown.add(showInfo);
         m_world.events.onInputOver.add(this.showOption, {message: words.menu_world});
-        m_world.events.onInputOut.add(this.showOption, {message: ""});*/
+        m_world.events.onInputOut.add(this.showOption, {message: ""});
+        
           // Return to menu button
         m_list = game.add.sprite(60, 10, 'list'); 
         m_list.inputEnabled = true;
@@ -188,12 +189,12 @@ var mapSquareTwo={
             m_info = game.add.text(14, 53, "", { font: "20px Arial", fill: "#330000", align: "center" });
               // Return to language button
             // Remove language icon ::Igor
-            /*m_world = game.add.sprite(10, 10, 'world'); 
+            m_world = game.add.sprite(10, 10, 'about'); 
             m_world.inputEnabled = true;
             m_world.input.useHandCursor = true;
-            m_world.events.onInputDown.add(this.loadState, {state: "boot", beep: beepSound});
+            m_world.events.onInputDown.add(showInfo);
             m_world.events.onInputOver.add(this.showOption, {message: words.menu_world});
-            m_world.events.onInputOut.add(this.showOption, {message: ""});*/
+            m_world.events.onInputOut.add(this.showOption, {message: ""});
               // Return to menu button
             m_list = game.add.sprite(60, 10, 'list'); 
             m_list.inputEnabled = true;
@@ -587,12 +588,12 @@ var gameSquareTwo={
         if(twoMenu){
               // Return to language button
             // Remove language icon ::Igor
-            /*m_world = game.add.sprite(10, 10, 'world'); 
+            m_world = game.add.sprite(10, 10, 'about'); 
             m_world.inputEnabled = true;
             m_world.input.useHandCursor = true;
-            m_world.events.onInputDown.add(this.loadState, {state: "boot", beep: beepSound});
+            m_world.events.onInputDown.add(showInfo);
             m_world.events.onInputOver.add(this.showOption, {message: words.menu_world});
-            m_world.events.onInputOut.add(this.showOption, {message: ""});*/
+            m_world.events.onInputOut.add(this.showOption, {message: ""});
               // Return to menu button
             m_list = game.add.sprite(60, 10, 'list'); 
             m_list.inputEnabled = true;
@@ -712,16 +713,16 @@ var gameSquareTwo={
         // ::Igor
         var fi = 0;
         if (result == true) { // Correct student's result:
-            hits[onePosition - 1] ++;
-            end[onePosition - 1] = Math.floor(Date.now()/1000);
+            hits[twoPosition - 1] ++;
+            end[twoPosition - 1] = Math.floor(Date.now()/1000);
             conta = true;
-            if (onePosition == 4) {
+            if (twoPosition == 4) {
                 fi = 1;
             }
         } else { // Error student's result:
-            errors[onePosition - 1] ++;
+            errors[twoPosition - 1] ++;
         }
-        iterator = onePosition;
+        iterator = twoPosition;
         sendResults(fi);
         
         /*var abst = "numBlocksA:"+sizeA+", valueA: " + valueA +", numBlocksB: " + sizeB + ", valueB: " + valueB;

ilm/ifractions/resource/cn/save.php → ilm/iFractions/0.1.2017.11.22/ifractions/resource/cn/save.php


ilm/ifractions/resource/fx/beep.mp3 → ilm/iFractions/0.1.2017.11.22/ifractions/resource/fx/beep.mp3


ilm/ifractions/resource/fx/beep.ogg → ilm/iFractions/0.1.2017.11.22/ifractions/resource/fx/beep.ogg


ilm/ifractions/resource/fx/error.mp3 → ilm/iFractions/0.1.2017.11.22/ifractions/resource/fx/error.mp3


ilm/ifractions/resource/fx/error.ogg → ilm/iFractions/0.1.2017.11.22/ifractions/resource/fx/error.ogg


ilm/ifractions/resource/fx/ok.mp3 → ilm/iFractions/0.1.2017.11.22/ifractions/resource/fx/ok.mp3


ilm/ifractions/resource/fx/ok.ogg → ilm/iFractions/0.1.2017.11.22/ifractions/resource/fx/ok.ogg


ilm/ifractions/resource/img/en_US/airballoon_base.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/airballoon_base.png


ilm/ifractions/resource/img/en_US/airballoon_upper.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/airballoon_upper.png


ilm/ifractions/resource/img/en_US/birch.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/birch.png


ilm/ifractions/resource/img/en_US/farm.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/farm.png


ilm/ifractions/resource/img/en_US/flag.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/flag.png


ilm/ifractions/resource/img/en_US/garage.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/garage.png


ilm/ifractions/resource/img/en_US/house.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/house.png


ilm/ifractions/resource/img/en_US/kid/lost.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/kid/lost.png


ilm/ifractions/resource/img/en_US/kid/run.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/kid/run.png


ilm/ifractions/resource/img/en_US/kid/walk.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/kid/walk.png


ilm/ifractions/resource/img/en_US/place_a.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/place_a.png


ilm/ifractions/resource/img/en_US/place_b.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/place_b.png


ilm/ifractions/resource/img/en_US/rock.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/rock.png


ilm/ifractions/resource/img/en_US/school.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/school.png


ilm/ifractions/resource/img/en_US/sign.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/sign.png


ilm/ifractions/resource/img/en_US/tractor/frame-0.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/tractor/frame-0.png


ilm/ifractions/resource/img/en_US/tractor/frame-1.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/tractor/frame-1.png


ilm/ifractions/resource/img/en_US/tractor/frame-2.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/tractor/frame-2.png


ilm/ifractions/resource/img/en_US/tractor/frame-3.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/tractor/frame-3.png


ilm/ifractions/resource/img/en_US/tractor/frame-4.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/tractor/frame-4.png


ilm/ifractions/resource/img/en_US/tractor/frame-5.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/tractor/frame-5.png


ilm/ifractions/resource/img/en_US/tractor/frame-6.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/tractor/frame-6.png


ilm/ifractions/resource/img/en_US/tractor/frame-7.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/tractor/frame-7.png


ilm/ifractions/resource/img/en_US/tractor/frame-8.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/tractor/frame-8.png


ilm/ifractions/resource/img/en_US/tractor/frame-9.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/tractor/frame-9.png


ilm/ifractions/resource/img/en_US/tractor/frame.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/tractor/frame.png


ilm/ifractions/resource/img/en_US/tree.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/tree.png


ilm/ifractions/resource/img/en_US/tree2.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/tree2.png


ilm/ifractions/resource/img/en_US/tree3.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/tree3.png


ilm/ifractions/resource/img/en_US/tree4.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/en_US/tree4.png


ilm/ifractions/resource/img/es_PE/airballoon_base.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/airballoon_base.png


ilm/ifractions/resource/img/es_PE/airballoon_upper.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/airballoon_upper.png


ilm/ifractions/resource/img/es_PE/birch.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/birch.png


ilm/ifractions/resource/img/es_PE/farm.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/farm.png


ilm/ifractions/resource/img/es_PE/flag.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/flag.png


ilm/ifractions/resource/img/es_PE/garage.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/garage.png


ilm/ifractions/resource/img/es_PE/house.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/house.png


ilm/ifractions/resource/img/es_PE/kid/lost.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/kid/lost.png


ilm/ifractions/resource/img/es_PE/kid/run.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/kid/run.png


ilm/ifractions/resource/img/es_PE/kid/walk.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/kid/walk.png


ilm/ifractions/resource/img/es_PE/place_a.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/place_a.png


ilm/ifractions/resource/img/es_PE/place_b.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/place_b.png


ilm/ifractions/resource/img/es_PE/rock.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/rock.png


ilm/ifractions/resource/img/es_PE/school.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/school.png


ilm/ifractions/resource/img/es_PE/sign.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/sign.png


ilm/ifractions/resource/img/es_PE/tractor/frame-0.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/tractor/frame-0.png


ilm/ifractions/resource/img/es_PE/tractor/frame-1.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/tractor/frame-1.png


ilm/ifractions/resource/img/es_PE/tractor/frame-2.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/tractor/frame-2.png


ilm/ifractions/resource/img/es_PE/tractor/frame-3.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/tractor/frame-3.png


ilm/ifractions/resource/img/es_PE/tractor/frame-4.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/tractor/frame-4.png


ilm/ifractions/resource/img/es_PE/tractor/frame-5.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/tractor/frame-5.png


ilm/ifractions/resource/img/es_PE/tractor/frame-6.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/tractor/frame-6.png


ilm/ifractions/resource/img/es_PE/tractor/frame-7.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/tractor/frame-7.png


ilm/ifractions/resource/img/es_PE/tractor/frame-8.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/tractor/frame-8.png


ilm/ifractions/resource/img/es_PE/tractor/frame-9.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/tractor/frame-9.png


ilm/ifractions/resource/img/es_PE/tractor/frame.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/tractor/frame.png


ilm/ifractions/resource/img/es_PE/tree.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/tree.png


ilm/ifractions/resource/img/es_PE/tree2.png → ilm/iFractions/0.1.2017.11.22/ifractions/resource/img/es_PE/tree2.png


+ 0 - 0
ilm/ifractions/resource/img/es_PE/tree3.png


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