Преглед изворни кода

Update 'iassign_form.php'

Synchronizing iAssign Git with the current iAssign stable version (until Moodle 5.0).
Small changes in: ilm_manager_form.php, ilm_manager.php, lang/*/iassign.php
Bigger changes in: lib.php, settings_form.php, settings.php, version.php, backup/moodle2/*.php, ilm_debug/escreva.php, ilm_handlers/java.php
New iLM versions: iassign/ilm/iFractions/, iassign/ilm/iHanoi/, iassign/ilm/iVProg/
New file (was missing): settings_activities.php
leo пре 2 недеља
родитељ
комит
4eb09fa24d
1 измењених фајлова са 53 додато и 39 уклоњено
  1. 53 39
      iassign_form.php

+ 53 - 39
iassign_form.php

@@ -22,7 +22,7 @@
  * @calledby ./locallib.php: function add_edit_iassign(): $mform = new mod_iassign_form(null, null, null, null, array('id'=>'mform1'));
  *
  * @author Patricia Alves Rodrigues
- * @author Leônidas O. Brandão
+ * @author Leo^nidas de Oliveira Branda~o
  * @version v 1.5 2013/09/19
  * @package mod_iassign
  * @since 2010/09/27
@@ -44,7 +44,9 @@ require_once($CFG->dirroot . '/mod/iassign/lib.php');
 
 
 /// This class create form based moodleform.
-//  @see /lib/formslib.php: __construct($action=null, $customdata=null, $method='post', $target='', $attributes=null, $editable=true, $ajaxformdata=null)
+//  @see      ./lib/formslib.php: __construct($action=null, $customdata=null, $method='post', $target='', $attributes=null, $editable=true, $ajaxformdata=null)
+//  @calledby ./mod/iassign/locallib.php : add_edit_iassign() : $mform = new mod_iassign_form(...)
+//  @see      ./mod/iassign/locallib.php : function update_iassign($param) : that will register in {iassign_statement}
 class mod_iassign_form extends moodleform {
 
   /// Add elements to form
@@ -54,15 +56,16 @@ class mod_iassign_form extends moodleform {
     $instance = $this->_customdata;
 
     //D echo "<br/><br/><br/><br/>iassign_form.php: this->_customdata="; print_r($this->_customdata); echo "<br/>";
-      
+
     // 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);
-    $id = $COURSE->cm;
+    // $id = $COURSE->cm;
     foreach ($igeom as $item)
       $idigeom = $item->id; // get the last id of iGeom
+      //D echo "iassign_form.php!definition(): COURSE->iassignid=" . $COURSE->iassignid . "<br/>\n"; // NAO def ", id=" . $id . 
 
     // Get recently used ilm id: @igor
     $params = array('curso' => $COURSE->id);
@@ -71,6 +74,8 @@ class mod_iassign_form extends moodleform {
        WHERE stm.iassignid = ias.id AND ias.course=:curso ORDER BY stm.id DESC LIMIT 1", $params);
 
     $all_ilm = $DB->get_records('iassign_ilm', array('enable' => 1)); // or use ./lib.php function: $all_ilm = search_iLM(1);
+
+    // $COURSE->iassignid is define in 'locallib.php!add_edit_iassign()' with "$COURSE->iassignid = $iassignid;"
     $iassigns = $DB->get_records('iassign_statement', array('iassignid' => $COURSE->iassignid));
 
     if ($all_ilm) {
@@ -95,13 +100,13 @@ class mod_iassign_form extends moodleform {
 
     $error_name = get_string('error_iassign_name', 'iassign');
 
-    // @todo Código Javascript, verificar alternativa.
+    // Javascript code to build form
     $code_javascript = "
   <script type='text/javascript'>
   //<![CDATA[
 
    var i;
-   var ids = new Array($ids);
+   var ids = new Array(" . $ids . ");
    var evaluates = new Array($evaluates);
 
    document.forms['mform1'].filename.disabled=1;  
@@ -145,8 +150,8 @@ class mod_iassign_form extends moodleform {
     }
 
   function config_ilm (id) {
-    //alert('config_ilm('+id+'): idigeom=$idigeom, ilmid='+document.forms['mform1'].iassign_ilmid.value);
-    if (id==$idigeom) {
+    //alert('config_ilm('+id+'): idigeom=" . $idigeom . ", ilmid='+document.forms['mform1'].iassign_ilmid.value);
+    if (id==" . $idigeom . ") {
       document.forms['mform1'].special_param1.style.display='block';
       document.forms['mform1'].special_param1.disabled=0;
       }
@@ -156,7 +161,7 @@ class mod_iassign_form extends moodleform {
       document.forms['mform1'].special_param1.disabled=1;
       }
     var i;
-    var ids = new Array($ids);
+    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;
@@ -221,7 +226,7 @@ class mod_iassign_form extends moodleform {
 
   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');
+    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>";
@@ -242,11 +247,15 @@ class mod_iassign_form extends moodleform {
     //-------------------------------------------------------------------------------
     // 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'));
+    // Information activity
+    //  Author activity: 
+    //  Last modified by:
+    $mform->addElement('header', 'data_activity', get_string('data_activity', 'iassign'));        // data_activity      ='Information activity'
+    $mform->addElement('static', 'author', get_string('author_id', 'iassign'));                   // author_id          ='Author activity:'
+    $mform->addElement('static', 'author_modified', get_string('author_id_modified', 'iassign')); // author_id_modified ='Last modified by:'
 
-    // Adding the standard "name" field
+    // Adding the standard "name" field: the title of this activity
+    //  Title [                       ]
     $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');
@@ -303,37 +312,37 @@ class mod_iassign_form extends moodleform {
     $html_group = get_string("group", "iassign") . " HTML";
     $java_group = get_string("group", "iassign") . " Java";
 
-
     $arrayHTML = array();
     $arrayJava = array();
-
     for ($ii=0; $ii<$num_iLM_html; $ii++) {
       $arrayHTML[$list_html_id[$ii]] = $list_html[$ii];
       }
     for ($ii=0; $ii<$num_iLM_java; $ii++) {
       $arrayJava[$list_applets_id[$ii]] = $list_applets[$ii];
       }
-
-    $selectElems = array(
-      $html_group => $arrayHTML,
-      $java_group => $arrayJava
-      );
+    $selectElems = array($html_group => $arrayHTML, $java_group => $arrayJava);
 
     $ilm_select = $mform->addElement('selectgroups', 'iassign_ilmid', get_string('choose_iLM', 'iassign'), $selectElems);
     $mform->addHelpButton('iassign_ilmid', 'choose_iLM', 'iassign');
 
-    if (isset($this->_customdata['iassign_ilmid'])) { // if it is first acces, define 'iassign_ilmid'
-      // It is defined in "locallib.php:add_edit_iassign()": $mform = new mod_iassign_form(null, array('id'=>'mform1', 'iassign_ilmid'=>$param->iassign_ilmid));
-      $iassign_ilmid = $this->_customdata['iassign_ilmid'];
-      $code_javascript .= ' <script>  document.forms[0].iassign_ilmid.value = ' . $iassign_ilmid . '</script>' . "\n";
+    // Select the iLM associated to this activity/file
+    // It is defined in "locallib.php:add_edit_iassign()": $mform = new mod_iassign_form(null, array('id'=>'mform1', 'iassign_ilmid'=>$param->iassign_ilmid));
+    // if (isset($this->_customdata['iassign_ilmid'])) $iassign_ilmid = $this->_customdata['iassign_ilmid'];
+    if (isset($mform->_attributes['iassign_ilmid'])) { // if it is first acces, define 'iassign_ilmid'
+      // ATTENTION, if the iLM is disabled, it is not selected under the JavaScript command bellow
+      // $mform->_attributes = Array([id] => mform1 [iassign_ilmid] => 1 [autocomplete] => off [action] => http://localhost/dev_saw/mod/iassign/view.php [method] => post [accept-charset] => utf-8 [class] => mform ) 
+      $iassign_ilmid = $mform->_attributes['iassign_ilmid'];
+      // If the page has more then one 'mform' the line bellow could fail, it is better to get "mform" by its id="mform1"
+      // $code_javascript .= ' <script>  document.forms[0].iassign_ilmid.value = ' . $iassign_ilmid . '</script>' . "\n";
+      $code_javascript .= ' <script>  document.forms["mform1"].iassign_ilmid.value = ' . $iassign_ilmid . '</script>' . "\n";
       }
     else
     if ($result_recent && isset($result_recent->iassign_ilmid)) { // try the last iLM used...
-      $code_javascript .= ' <script>  document.forms[0].iassign_ilmid.value = ' . $result_recent->iassign_ilmid . '</script>' . "\n";
+      // $code_javascript .= ' <script>  document.forms[0].iassign_ilmid.value = ' . $result_recent->iassign_ilmid . '</script>' . "\n";
+      $code_javascript .= ' <script>  document.forms["mform1"].iassign_ilmid.value = ' . $result_recent->iassign_ilmid . '</script>' . "\n";
       }
 
-
-    //TODO Adaptives to use API of MoodleForm
+    //TODO Adjusts to use API of MoodleForm
     // addOption($optgroup, $text, $value, $attributes=null)
     // $allOptions = array(); $ilmHtml = array(); $ilmJava = array();
     // $ilmHtml[] = $mform->createElement('optgroup', 'groupHtml', 'Group HTML');
@@ -354,22 +363,23 @@ class mod_iassign_form extends moodleform {
     // Field 'action'
     $fileurl = "";
     $filename = "";
-    if (!is_null($COURSE->iassign_file_id)) {
+    if (!is_null($COURSE->iassign_file_id)) { // "$COURSE->iassign_file_id" must be filled in "locallib.php : function add_edit_iassign(): ... = $file_item->get_id()"
       $mform->addElement('hidden', 'action', 'viewpluginpage');
       $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();
       $filename = $file->get_filename();
       }
+    //D echo "iassign_form.php: COURSE->id=" . $COURSE->id . ", COURSE->iassign_file_id=" . $COURSE->iassign_file_id . ", filename=" . $filename . "<br/>\n";// exit;
 
-    $html_div = '<div id="fitem_id_iassign_file_id" class="fitem required fitem_fgroup" style="padding: 35px; padding-left: 0;">';
-    $html_div .= '<div class="fitemtitle col-md-3" style="padding: 0; float: left;">' . get_string('choose_file', 'iassign'); // 'Choose the file with the iLM activity'
-
-    $html_div .= '<span><a><i class="icon fa fa-exclamation-circle text-danger fa-fw " title="' . get_string('requiredelement', 'form') . '" aria-label="' . get_string('requiredelement', 'form') . '" style="float: right; cursor: help; padding-right: 15px;"></i></a></span></div>';
-
-    $html_div .= '<div class="felement fselect" id="error_message_file"><div class="file_iassign" id="file_border" style="display: inline;margin-left: 14px;border: 1px solid #cecfd1;padding: 8px;padding-right: 8px;border-radius: 4px;padding-right: 2px;">';
 
-    $html_div .= '<i class="icon fa fa-file-text-o fa-fw" id="icon_doc" style="color: #8f8f8f;"></i><span id="iassign_file_link" style="color:#000000;"><a href="' . $fileurl . '" target="_blank" title="' . get_string('download_file', 'iassign') . $filename . '">' . $filename . '</a></span>';
+    // Form field: "Choose the file with the iLM activity"
+    // Here appears the file name (content to the iLM)
+    $html_div = '<div id="fitem_id_iassign_file_id" class="fitem required fitem_fgroup" style="padding: 35px; padding-left: 0;">' . chr(13);
+    $html_div .= '<div class="fitemtitle col-md-3" style="padding: 0; float: left;">' . get_string('choose_file', 'iassign'); // 'Choose the file with the iLM activity'
+    $html_div .= '<span><a><i class="icon fa fa-exclamation-circle text-danger fa-fw " title="' . get_string('requiredelement', 'form') . '" aria-label="' . get_string('requiredelement', 'form') . '" style="float: right; cursor: help; padding-right: 15px;"></i></a></span></div>' . chr(13);
+    $html_div .= '<div class="felement fselect" id="error_message_file"><div class="file_iassign" id="file_border" style="display: inline;margin-left: 14px;border: 1px solid #cecfd1;padding: 8px;padding-right: 8px;border-radius: 4px;padding-right: 2px;">' . chr(13);
+    $html_div .= '<i class="icon fa fa-file-text-o fa-fw" id="icon_doc" style="color: #8f8f8f;"></i><span id="iassign_file_link" style="color:#000000;"><a href="' . $fileurl . '" target="_blank" title="' . get_string('download_file', 'iassign') . $filename . '">' . $filename . '</a></span>' . chr(13);
 
     if ($fileurl != "")
       $html_div .= '&nbsp;&nbsp;&nbsp;';
@@ -392,11 +402,11 @@ class mod_iassign_form extends moodleform {
     //Applies only when the iLM is automatic evaluate.
     $mform->addElement('header', 'id_automatic_evaluate', get_string('only_automatic_evaluate', 'iassign'));
 
-    // Using automatic evaluation activity? 0 - no / 1 – yes
+    // Using automatic evaluation activity? 0 - no / 1 - Yes
     $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 See commentd code
     //$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'));
@@ -433,7 +443,7 @@ class mod_iassign_form extends moodleform {
     //--------------
     $mform->addElement('header', 'op_val', get_string('op_val', 'iassign'));
 
-    $mform->addElement('modgrade', 'grade', get_string('grade', 'iassign'));
+    $mform->addElement('modgrade', 'grade', get_string('grade', 'iassign') . ':'); // 'grade'='Grade activity'
     $mform->setDefault('grade', 100);
     $mform->disabledIf('grade', 'type_iassign', 'eq', 1); //activity does not display if the type example
     $mform->disabledIf('grade', 'type_iassign', 'eq', 2); //activity does not display if the type test
@@ -488,10 +498,14 @@ class mod_iassign_form extends moodleform {
     $mform->setType('fileold', PARAM_TEXT);
     $mform->addElement('hidden', 'iassignid');
     $mform->setType('iassignid', PARAM_TEXT);
+
+
     $mform->addElement('hidden', 'author_name');
     $mform->setType('author_name', PARAM_TEXT);
+
     $mform->addElement('hidden', 'author_modified_name');
     $mform->setType('author_modified_name', PARAM_TEXT);
+
     $mform->addElement('hidden', 'timecreated');
     $mform->setType('timecreated', PARAM_TEXT);
     $mform->addElement('hidden', 'position');