Activities: iAssign

mod_iassign
Maintained by Leônidas Brandão, Luciano Oliveira Borges, Patricia Alves Rodrigues
iAssign (Interactive Assignment) package aims to enhance activities in Moodle, allowing the incorporation of "Interactive Learning Modules" (iLM) to Moodle. iAssign also provides: an area to teachers cooperate (Block); a filter to incorporate any iLM in any Moodle text (Filter); and a TinyMCE editor button (TinyMCE Plugin). Attention: in order to proper work, iAssign needs its associated packages - block, filter, and editor (please, get all of them).
4 sites
2 fans
The iAssign (Interactive Assignment) package aims to enhance activities in Moodle, allowing the incorporation of learning plugins to Moodle.
These plugins are called interactive Learning Modules (iLM), and examples of iLM that comes with iAssign are:
1. iGeom: Interactive Geometry
2. iGraf: Interactive Graphics and Functions
3. iComb: Interactive Enumerative Combinatorics
4. ivProg: Visual and Interactive Programming on the Internet
So, an iLM is any interactive tool that runs under a Web browser, typically it is a Java applet or an HTML5(Developing) package with a few (mandatory) communication methods, all based on HTTP protocol. This implies that any learning 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 your Moodle. For instance, a "teacher" can use the iAssign authoring tools to create activities with any iLM.
In order to help teachers and students, iAssign also provides:
1. an area to the teachers' cooperation (Manager Interactive Activities of iAssign);
2. a filter to incorporate any iLM activities in any Moodle text (iAssign Filter);
3. and a modified TinyMCE editor (Insert interactive activity).

Attention: in order to proper work,
iAssign needs its associated packages - block, filter, and editor.

Sets

This plugin is part of set iAssign.

Contributors

Luciano Oliveira Borges: developer
Patricia Alves Rodrigues: developer

• Wed, 26 Mar 2014, 12:15 PM
Leônidas - Many thanks for sharing this plugin with the Moodle community.

Please review http://docs.moodle.org/dev/Plugin_validation#Recommended_URLs and then edit the plugin entry to provide the source, tracker, and documentation URLs that will enable others in the community to more actively participate in using and maintaining this plugin.

I was successfully able to install the plugin in Moodle 2.4 but I did not really test the functionality all that much. For now, I wanted to get you some feedback on each of the iAssign plugins so that you can begin working on getting those tidied up and ready to share. Have you done any testing in later versions of Moodle (2.5 or 2.6)?

In the README file it mentions:

4) Copy the 'iassign' module directory into the "mod" subdirectory of Moodle installation
5) Copy the 'iassign_filter' filter directory into the "filter" subdirectory of Moodle
6) Copy the 'iassign_block' filter directory into the "blocks" subdirectory of Moodle

Are the block and filter required to make use of the module? Can you explain the dependencies. It sounds like it is really best to install all of the iAssign set to make use of things.

I am curious about the ilm folder's jar files and the license of the those resources. It was not immediately clear to me how those are licensed. Also, those resources seem be configured for use in Portuguese (for example, the igeom.cfg file). How might we better deal with that so that they can be easily used in other languages? In lang/en/iassign.php, it appears that there are a number of strings that are untranslated into English. I think it would be good, even if you just used Google translate, to get those translated.

I noticed that the recommended boilerplate was not used in the version.php file.The boilerplate is recommended at the beginning of each file and makes explicit the GPL license. You may want to review http://docs.moodle.org/dev/Coding_style#Files to learn more abut the boilerplate comments and use them instead but that is not all that important.

For now, I am going to mark this plugin as needing more work until we get these issues resolved. Thanks for your patience with the review and approval process. Please do not hesitate to let me know if there is anything I can do to be supportive of your efforts.

Peace - Anthony
• Thu, 24 Apr 2014, 11:58 AM
Hi Anthony
I'm facing an error whener I try to update the description of my plugin iAssign.
I always get: error/unknownparamtype.
I tryed different browsers with different versions, in 2 different Linux (with Konqueror, Firefox, Epiphany, Chrome and Opera). I'm logged and in page 'https://moodle.org/plugins/view.php?plugin=mod_iassign' (from where I send this message).
My intention is to fix some information and provide some data required by you (in order to consider the iAssign to approval).
Please, can you help me? Do you have some hint to circunvent this error?
Leônidas
• Thu, 24 Apr 2014, 10:32 PM
Ops. Revision: "I'm facing an error WHENEVER I try to update the description of my plugin iAssign." - option "Edit this plugin" under "https://moodle.org/plugins/view.php?plugin=mod_iassign".
• Fri, 25 Apr 2014, 6:41 AM
MDLSITE-2997, it should work now
• Wed, 28 May 2014, 9:34 PM
Yes, it is working now. We are adjusting things in iAssign (and in its associated filter, editor and block). Thank you.
• Tue, 1 Jul 2014, 12:16 AM
Thanks for sharing this plugins set with the community.

I noticed you use the trailing (closing) PHP tag ?> at the end of files. Please note it's recommended to avoid it as it is known to
cause troubles where plain HTTP headers are supposed to be sent by the script and some whitespace bytes get after these optional
tags (which some text editors tend to do).

I noticed that the recommended boilerplate was not used in the version.php file. The boilerplate is recommended at the beginning of
each file and makes explicit the GPL license. You may want to review http://docs.moodle.org/dev/Coding_style#Files to learn more

Please make sure to follow the coding guidelines and have the Unix style of end-of-line characters. Most of good IDEs allow you to
set this.

It is discouraged to use PARAM_TEXT for passed script actions. Please consider switching to PARAM_ALPHANUMEXT.

Instead of manually checking the presence of other required plugins, the $plugin->dependecies declaration should be used. Please see http://docs.moodle.org/dev/version.php fo further reference. I noticed that you create classes in the global PHP scope without the valid frankenstyle prefix. This is strongly discouraged in order to prevent collisions with (current and/or future) core code or some other plugin. See http://docs.moodle.org/dev/Coding_style#Functions_and_Methods for details. This applies to your classes like utils etc. Please note the usage of$CFG->prefix in SQL queries was deprecated. Refer to the DML API for the expected API usage. Especially pay
attention to how placeholders are supposed to be used. Also, to make your plugin working cross-db, please use the API calls instead
of having LIKE and similar operators hard-coded.

Some of your queries use MySQL specific syntax (backticks) and fail badly on other databases. Let me suggest to review all the
queries and test them on some other database as well (e.g. PostgreSQL).

You seem to access superglobal variables like $_GET,$_POST or $_SESSION directly in your code. Note that at least the places I examined could (and should) be accessed via proper param handling API such as required_param() with strict validation rules set. Make sure the strings in lang/en/ are all in English. Some of them were left localised there. Also note, just the English strings are supposed to be distributed together with the plugin. All translations (inclusing your pt_br) are supposed to be maintained in AMOS at lang.moodle.org. Let me strongly suggest to try and avoid things like using eval() instead of common switch/case or if/else constructs. It only makes your code less intuitive for other Moodle developers, if not potentially vulnerable in the future. For now, I am going to mark this plugin as needing more work until we get these issues resolved. Thanks for your patience with the review and approval process. • Wed, 2 Jul 2014, 5:22 AM Thank you David Mudrák for comments. Return for your questions: | I noticed you use the trailing (closing) PHP tag ?> at the end of files. Please note it's recommended to avoid it as it is known to... The files were corrected. | I noticed that the recommended boilerplate was not used in the version.php file. The boilerplate is recommended at the beginning of... The license is specified on each file. | Please make sure to follow the coding guidelines and have the Unix style of end-of-line characters. Most of good IDEs allow you to set this. The files were corrected. | It is discouraged to use PARAM_TEXT for passed script actions. Please consider switching to PARAM_ALPHANUMEXT... Changes were made, were only kept in the forms files. | Instead of manually checking the presence of other required plugins, the$plugin->dependecies declaration should be used. Please see...
This has been done in the archives, but there is a redundancy since Moodle 2.4 (supported by the plugin) does not make this distinction dependency.

| I noticed that you create classes in the global PHP scope without the valid frankenstyle prefix. This is strongly discouraged in...
Changed classes in PHP files to frankenstyle prefix (utils, language and log)

| Please note the usage of $CFG->prefix in SQL queries was deprecated. Refer to the DML API for the expected API usage. Especially pay... Removed$CFG->prefix in SQL queries.

| Some of your queries use MySQL specific syntax (backticks) and fail badly on other databases. Let me suggest to review all the...
Removed backticks in MySQL queries.

| You seem to access superglobal variables like $_GET,$_POST or $_SESSION directly in your code. Note that at least the places... Changed the use if$_GET, $_POST or$_SESSION to required_param() or opitional_param().

| Make sure the strings in lang/en/ are all in English. Some of them were left localised there. Also note, just the English strings...
Fix some tags to english in lang/en/ file.

| All translations (inclusing your pt_br) are supposed to be maintained in AMOS at lang.moodle.org.
Some other languages ​​are ready just waiting approval for inserting in AMOS.

| Let me strongly suggest to try and avoid things like using eval() instead of common switch/case or if/else constructs. It only makes
The use of eval is a security method in our plugin and a separation required for MVC model.

Thanks for the help and I look back on the changes to the approval of the plugin.

Note: We have another version that will support Moodle 2.7 will be inserted after the approval of this version (this not support Moodle 2.4).

Luciano Borges
• Wed, 2 Jul 2014, 6:32 PM
Hi Luciano. Thanks for the prompt update. I re-checked the version 2.1.87 of the plugin.

* Some files (like locallib.php) are still using the unexpect EOL syntax.
* Blindly using PARAM_ALPHANUMEXT for all params was not the point of my feedback. I would say the
parameters like 'id' should be PARAM_INT (or am I missing something?)
* I undestand why you need extra checks for other plugins now (thanks), still having them declared in version.php will help users to
catch them earlier during the installation of the plugin. In Moodle 2.4, extra $plugin->dependencies declaration will be just ignored. * The class 'activity' is still missing the expected prefix. Also, the class 'ilm' does not use the expected prefix, strictly speaking. There seems to be a mix of both iassign_ and ilm_ prefixes used in this plugin. * I can still see quite a few$CFG->prefix used in the code.
* I can't see how using eval() really helps a security in your plugin.

I am going to approve your plugin now, hoping that these issues will be addressed in future versions of it, together with those
based on the wider feedback from the community. You are cleared to land now, welcome to the Plugins directory.