Uploaded image for project: 'Moodle'
  1. Moodle
  2. MDL-32523

Copy (Duplicate) question(s) in the Question Bank

    Details

    • Type: New Feature
    • Status: Closed
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: 2.2.2, 2.7
    • Fix Version/s: 2.7
    • Component/s: Questions
    • Labels:
    • Testing Instructions:
      Hide
      1. Go to Administration -> Question bank -> Questions in a course. (If needed create a couple of questions.)
      2. In the table in question bank click on “Duplicate” icon for a question
      3. This take you to the question editing page and you will see that the information on the question editing form is taken from the given question you decided to duplicate
      4. The string ‘ (copy)’ is concatenated to the end of the question name, modify form as you require and click on ‘Save changes’
      5. The new question appear in the list of questions in the question bank
      6. Repeat steps 2-5 for these cases:
        • Simple qtype like multichoice.
        • Simple qtype, but with images embedded in lots of the text fields.
        • A multianswer (Cloze) question.
        • A calculated question.

      This can be equally be done from the question bank displayed on quiz editing page.

      Show
      Go to Administration -> Question bank -> Questions in a course. (If needed create a couple of questions.) In the table in question bank click on “Duplicate” icon for a question This take you to the question editing page and you will see that the information on the question editing form is taken from the given question you decided to duplicate The string ‘ (copy)’ is concatenated to the end of the question name, modify form as you require and click on ‘Save changes’ The new question appear in the list of questions in the question bank Repeat steps 2-5 for these cases: Simple qtype like multichoice. Simple qtype, but with images embedded in lots of the text fields. A multianswer (Cloze) question. A calculated question. This can be equally be done from the question bank displayed on quiz editing page.
    • Affected Branches:
      MOODLE_22_STABLE, MOODLE_27_STABLE
    • Fixed Branches:
      MOODLE_27_STABLE
    • Pull from Repository:
    • Pull Master Branch:

      Description

      Add a "Copy" button to the buttom of the question list (Inside the Question Bank) that enable the question creator to duplicate a question inside the same category or a different one. (next to the "Move" button)

      Question's data should be duplicated and not "linked" to, to enable teachers to change the copied question(s) without changing the original question inside the Quiz that was using the original questions.

        Gliffy Diagrams

          Attachments

            Issue Links

              Activity

              Hide
              ppichet Pierre Pichet added a comment -

              Say in other words you want to have the same result as the "save as a new question" button in the edit form where nothing except possibly the category has been changed.

              As usual calculated will need special handling

              Show
              ppichet Pierre Pichet added a comment - Say in other words you want to have the same result as the "save as a new question" button in the edit form where nothing except possibly the category has been changed. As usual calculated will need special handling
              Hide
              nadavkav Nadav Kavalerchik added a comment -

              @Pierre
              Yes

              Show
              nadavkav Nadav Kavalerchik added a comment - @Pierre Yes
              Hide
              timhunt Tim Hunt added a comment -

              Acutally, I was already considering this. I think it would be a much less confusing user-interface is we separated copy question and move question behaviour from the edit question behaviour. It would also simplify the code, which means fewer bugs.

              I mean, how many times have you clicked on the 'Edit' icon for an question intending to make some changes, and then click 'Make copy', but then clicked 'Save changes' by mistake, and broken the original question.

              Show
              timhunt Tim Hunt added a comment - Acutally, I was already considering this. I think it would be a much less confusing user-interface is we separated copy question and move question behaviour from the edit question behaviour. It would also simplify the code, which means fewer bugs. I mean, how many times have you clicked on the 'Edit' icon for an question intending to make some changes, and then click 'Make copy', but then clicked 'Save changes' by mistake, and broken the original question.
              Hide
              nadavkav Nadav Kavalerchik added a comment -

              @Tim
              +1 (or Like) to your previous comment

              btw, I was going through the code and found out the question_save function
              and I think it is very easy to implement. and if you are busy... i will have it done next week or so.
              Unless, of course... you already on it

              Show
              nadavkav Nadav Kavalerchik added a comment - @Tim +1 (or Like) to your previous comment btw, I was going through the code and found out the question_save function and I think it is very easy to implement. and if you are busy... i will have it done next week or so. Unless, of course... you already on it
              Hide
              timhunt Tim Hunt added a comment -

              No. I am not on it. I am on MDL-3030. Until that is done, I cannot promise to peer review anything.

              As Pierre says, make sure to test calculated questions. Also, you will need to read http://docs.moodle.org/dev/Question_data_structures

              Show
              timhunt Tim Hunt added a comment - No. I am not on it. I am on MDL-3030 . Until that is done, I cannot promise to peer review anything. As Pierre says, make sure to test calculated questions. Also, you will need to read http://docs.moodle.org/dev/Question_data_structures
              Hide
              nadavkav Nadav Kavalerchik added a comment -

              @Tim, ok I will patch it and add a link to it when I am done.

              Show
              nadavkav Nadav Kavalerchik added a comment - @Tim, ok I will patch it and add a link to it when I am done.
              Hide
              nadavkav Nadav Kavalerchik added a comment -

              I have made some progress, BUT I am stuck. and love to get some help...

              I have added the following code to moodle/question/editlib.php (around/after line 403)
              Which adds a listbox of "my courses" at the end of the Question Bank dialog, to which i am about to copy a question

              question_category_select_menu($addcontexts, false, 0, "$category->id,$category->contextid");
              // new code start here
              echo "<hr/>";   
              $mycourses = get_my_courses($USER->id);
              foreach($mycourses as $mycourse) {
                $mycourseslist[$mycourse->id] = $mycourse->fullname;
              }
              echo choose_from_menu($mycourseslist,'selectedcourse');
              echo '<input type="submit" name="copy" value="'.get_string('copyto', 'quiz')."\" />\n";
              // new code end here
              }

              And added a new Action:"copy" to handle to copy/duplicate request,
              around line 442 (inside question_showbank_action() function):

                  if (optional_param('copy', false, PARAM_BOOL) and confirm_sesskey()) {
                  $courseid = required_param('courseid', PARAM_SEQUENCE);
                  $sql = "SELECT qc.id as tocategoryid, qc.contextid as contextid
              FROM `mdl_context` c
              JOIN `mdl_question_categories` qc ON c.id = qc.contextid
              WHERE `instanceid` = $courseid ";
               
              $questioncategory = get_record_sql($sql);
                    if (! $tocategory = get_record('question_categories', 'id', $questioncategory->tocategoryid, 'contextid', $questioncategory->contextid)) {
                        error('Could not find category record');
                    }
                    $tocontext = get_context_instance_by_id($questioncategory->contextid);
               
               
                    $rawdata = (array) data_submitted();
                    $questionids = array();
                    foreach ($rawdata as $key => $value) {    // Parse input for question ids
                        if (preg_match('!^q([0-9]+)$!', $key, $matches)) {
                            $key = $matches[1];
                            $questionids[] = $key;
                        }
                    }
                    if ($questionids){
                      $questionidlist = join($questionids, ',');
                      $sql = "SELECT q.*, c.contextid FROM {$CFG->prefix}question q, {$CFG->prefix}question_categories c WHERE q.id IN ($questionidlist) AND c.id = q.category";
                      if (!$questions = get_records_sql($sql)){
                          print_error('questiondoesnotexist', 'question', $pageurl->out());
                      }
                      foreach($questions as $question) {
                        $question->id = NULL;
                        echo $question->name = 'copy_'.$question->name; echo "<br/>";
                        $newquestion = $QTYPES[$question->qtype]->save_question($question, $question);                    
                      }
                    }
                    die;
                  }

              What I am trying to do is, to copy the selected question(s) to the first question category of the selected course.
              I am calling $QTYPES[$question->qtype]->save_question() for each question. BUT! it seems that the save_question_options() for each question type does not get invoked and the question is "half" duplicated.
              I see it on the question bank list, but, with no content.
              While examining the question/type/questiontype.php - save_question() function I saw that it is suppose to be invoked from within the function.
              Should I invoke it explicitly? (For each question type and 3rd-party question type too)
              And am I on the right track with this implementation? (Should it be done in a different way?)

              Show
              nadavkav Nadav Kavalerchik added a comment - I have made some progress, BUT I am stuck. and love to get some help... I have added the following code to moodle/question/editlib.php (around/after line 403) Which adds a listbox of "my courses" at the end of the Question Bank dialog, to which i am about to copy a question question_category_select_menu($addcontexts, false, 0, "$category->id,$category->contextid"); // new code start here echo "<hr/>"; $mycourses = get_my_courses($USER->id); foreach($mycourses as $mycourse) { $mycourseslist[$mycourse->id] = $mycourse->fullname; } echo choose_from_menu($mycourseslist,'selectedcourse'); echo '<input type="submit" name="copy" value="'.get_string('copyto', 'quiz')."\" />\n"; // new code end here } And added a new Action:"copy" to handle to copy/duplicate request, around line 442 (inside question_showbank_action() function): if (optional_param('copy', false, PARAM_BOOL) and confirm_sesskey()) { $courseid = required_param('courseid', PARAM_SEQUENCE); $sql = "SELECT qc.id as tocategoryid, qc.contextid as contextid FROM `mdl_context` c JOIN `mdl_question_categories` qc ON c.id = qc.contextid WHERE `instanceid` = $courseid ";   $questioncategory = get_record_sql($sql); if (! $tocategory = get_record('question_categories', 'id', $questioncategory->tocategoryid, 'contextid', $questioncategory->contextid)) { error('Could not find category record'); } $tocontext = get_context_instance_by_id($questioncategory->contextid);     $rawdata = (array) data_submitted(); $questionids = array(); foreach ($rawdata as $key => $value) { // Parse input for question ids if (preg_match('!^q([0-9]+)$!', $key, $matches)) { $key = $matches[1]; $questionids[] = $key; } } if ($questionids){ $questionidlist = join($questionids, ','); $sql = "SELECT q.*, c.contextid FROM {$CFG->prefix}question q, {$CFG->prefix}question_categories c WHERE q.id IN ($questionidlist) AND c.id = q.category"; if (!$questions = get_records_sql($sql)){ print_error('questiondoesnotexist', 'question', $pageurl->out()); } foreach($questions as $question) { $question->id = NULL; echo $question->name = 'copy_'.$question->name; echo "<br/>"; $newquestion = $QTYPES[$question->qtype]->save_question($question, $question); } } die; } What I am trying to do is, to copy the selected question(s) to the first question category of the selected course. I am calling $QTYPES [$question->qtype] ->save_question() for each question. BUT! it seems that the save_question_options() for each question type does not get invoked and the question is "half" duplicated. I see it on the question bank list, but, with no content. While examining the question/type/questiontype.php - save_question() function I saw that it is suppose to be invoked from within the function. Should I invoke it explicitly? (For each question type and 3rd-party question type too) And am I on the right track with this implementation? (Should it be done in a different way?)
              Hide
              timhunt Tim Hunt added a comment -

              Try reading http://docs.moodle.org/dev/Question_data_structures if you have never read it before.

              You need to make sure you pass the right data to save_question, which is non-trivial, because get_question_options does not return the data structure that save_question expects.

              Show
              timhunt Tim Hunt added a comment - Try reading http://docs.moodle.org/dev/Question_data_structures if you have never read it before. You need to make sure you pass the right data to save_question, which is non-trivial, because get_question_options does not return the data structure that save_question expects.
              Hide
              nadavkav Nadav Kavalerchik added a comment -

              Tim, Thanks you very much!

              I wish I came across the document before, though i read a few "neighboring" documents and read through several question types too.

              Again, thank you!

              Show
              nadavkav Nadav Kavalerchik added a comment - Tim, Thanks you very much! I wish I came across the document before, though i read a few "neighboring" documents and read through several question types too. Again, thank you!
              Hide
              chester144 chester folming added a comment -

              Our teachers would love this "save as a new question" button.
              Is this coming?

              Show
              chester144 chester folming added a comment - Our teachers would love this "save as a new question" button. Is this coming?
              Hide
              timhunt Tim Hunt added a comment -

              This issue was assigned to me automatically, however I will not be able to work on this issue in the immediate future. In order to create a truer sense of the state of this issue and to allow other developers to have chance to become involved, I am removing myself as the assignee of this issue.

              For more information, see http://docs.moodle.org/dev/Changes_to_issue_assignment

              Show
              timhunt Tim Hunt added a comment - This issue was assigned to me automatically, however I will not be able to work on this issue in the immediate future. In order to create a truer sense of the state of this issue and to allow other developers to have chance to become involved, I am removing myself as the assignee of this issue. For more information, see http://docs.moodle.org/dev/Changes_to_issue_assignment
              Hide
              mkassaei Mahmoud Kassaei added a comment -

              I have done the fix

              Here is the diff:

              https://github.com/mkassaei/moodle/compare/mdl_32523?expand=1

              BTW, I deleted the "Make a copy" from the form and its occurrence in the code apart from

              } else if (!empty($form->makecopy)) {
              in question/type/calculated/questiontype.php and

              if (empty($question->makecopy) && $question->itemid[$i]) {
              and
              if (!empty($question->makecopy) && !empty($question->convert)) {
              in question/type/calculatedsimple/questiontype.php

              I believe that 'makecopy' need to be replaced by 'duplicate', since we have a hidden element 'duplicate' in question/type/edit_question_form.php. Alternatively, we could replace 'duplicate' in new changes with 'makecopy' and therefore we might get away with not changing the above calculated qtypes.

              Show
              mkassaei Mahmoud Kassaei added a comment - I have done the fix Here is the diff: https://github.com/mkassaei/moodle/compare/mdl_32523?expand=1 BTW, I deleted the "Make a copy" from the form and its occurrence in the code apart from } else if (!empty($form->makecopy)) { in question/type/calculated/questiontype.php and if (empty($question->makecopy) && $question->itemid [$i] ) { and if (!empty($question->makecopy) && !empty($question->convert)) { in question/type/calculatedsimple/questiontype.php I believe that 'makecopy' need to be replaced by 'duplicate', since we have a hidden element 'duplicate' in question/type/edit_question_form.php. Alternatively, we could replace 'duplicate' in new changes with 'makecopy' and therefore we might get away with not changing the above calculated qtypes.
              Hide
              timhunt Tim Hunt added a comment -

              I have not yet tested this yet, I have just looked at the code, but it is looking very good. A pleasingly small patch.

              Some minor points:

              1. I think that, to duplicate a question, you need moodle/question:add on the context of the currently selected category, and question_has_capability_on($question, 'view') on the question being copied. I think this affects

              • question_bank_duplicate_action_column
              • question/question.php
              • validation() in question/type/edit_question_form.php.

              2. I am not sure why you need protected $duplicatequestionurl;

              3. I wonder if we can use the name makecopy instead of duplicate? If we are lucky that might make things like caclulated and STACK just work. If we are unlucky, it will cause problems.

              4. I don't think you should remove the // Copies should not be hidden comment.

              5. Please can you edit this issue, and write some testing instructions. We will need those before this can be integrated.

              6. Also, if it were me, I would probably add more to the commit comment explaining what this change is.

              Show
              timhunt Tim Hunt added a comment - I have not yet tested this yet, I have just looked at the code, but it is looking very good. A pleasingly small patch. Some minor points: 1. I think that, to duplicate a question, you need moodle/question:add on the context of the currently selected category, and question_has_capability_on($question, 'view') on the question being copied. I think this affects question_bank_duplicate_action_column question/question.php validation() in question/type/edit_question_form.php. 2. I am not sure why you need protected $duplicatequestionurl; 3. I wonder if we can use the name makecopy instead of duplicate? If we are lucky that might make things like caclulated and STACK just work. If we are unlucky, it will cause problems. 4. I don't think you should remove the // Copies should not be hidden comment. 5. Please can you edit this issue, and write some testing instructions. We will need those before this can be integrated. 6. Also, if it were me, I would probably add more to the commit comment explaining what this change is.
              Hide
              mkassaei Mahmoud Kassaei added a comment -

              Thanks Tim,
              I have replaced 'duplicate' with 'makecopy' accordingly and added other minor changes.
              I also tested with calculated qtype and it worked.

              Show
              mkassaei Mahmoud Kassaei added a comment - Thanks Tim, I have replaced 'duplicate' with 'makecopy' accordingly and added other minor changes. I also tested with calculated qtype and it worked.
              Hide
              timhunt Tim Hunt added a comment -

              That is getting better, but two more things:

              1. I just noticed ' (copy)' was hard-coded. It needs to be a langauge string, and you should not concatenate strings, because that does not work for languages taht need a different word order. So, you need a string like

              $string['questionnamecopy'] = '{$a} (copy)';

              2. I think you should not use 'makecopy' in question_bank_makecopy_action_column or makecopyaction. I think in those two you could just use the word 'copy'.

              3. You need to rebase -i to reduce this to a single commit.

              Show
              timhunt Tim Hunt added a comment - That is getting better, but two more things: 1. I just noticed ' (copy)' was hard-coded. It needs to be a langauge string, and you should not concatenate strings, because that does not work for languages taht need a different word order. So, you need a string like $string['questionnamecopy'] = '{$a} (copy)'; 2. I think you should not use 'makecopy' in question_bank_makecopy_action_column or makecopyaction. I think in those two you could just use the word 'copy'. 3. You need to rebase -i to reduce this to a single commit.
              Hide
              mkassaei Mahmoud Kassaei added a comment -

              I have amended the code to accommodate the above changes including checking for capabilities that the user can add a question in the same category as the existing question and to view and edit the details of the question being copied.

              Show
              mkassaei Mahmoud Kassaei added a comment - I have amended the code to accommodate the above changes including checking for capabilities that the user can add a question in the same category as the existing question and to view and edit the details of the question being copied.
              Hide
              timhunt Tim Hunt added a comment -

              Oops! Typo. The new lang string has ' {copy)'. They should both be round brackets.

              Show
              timhunt Tim Hunt added a comment - Oops! Typo. The new lang string has ' {copy)'. They should both be round brackets.
              Hide
              timhunt Tim Hunt added a comment -

              Also, I just tested with qtype_multianswer, and that does not work for some reason.

              Show
              timhunt Tim Hunt added a comment - Also, I just tested with qtype_multianswer, and that does not work for some reason.
              Hide
              timhunt Tim Hunt added a comment -

              I also tested a STACK question, which is a particularly complicated qtype, and that worked fine . So, we just need to fix multianswer, and the type, and we are done.

              Show
              timhunt Tim Hunt added a comment - I also tested a STACK question, which is a particularly complicated qtype, and that worked fine . So, we just need to fix multianswer, and the type, and we are done.
              Hide
              mkassaei Mahmoud Kassaei added a comment -

              I have created two multianswer questions taking the two examples form
              http://docs.moodle.org/26/en/question/type/multianswer
              It was able to duplicate both of them.

              Show
              mkassaei Mahmoud Kassaei added a comment - I have created two multianswer questions taking the two examples form http://docs.moodle.org/26/en/question/type/multianswer It was able to duplicate both of them.
              Hide
              mkassaei Mahmoud Kassaei added a comment -

              I have changed the typo '{cop)' to '(cop)' and pushed it github

              Show
              mkassaei Mahmoud Kassaei added a comment - I have changed the typo '{cop)' to '(cop)' and pushed it github
              Hide
              timhunt Tim Hunt added a comment -

              I don't know what happened before, but when I test again, multianswer questions are fine.

              So, this is now ready for integration. We just need to wait for 2.6 to be released, then we can rebase this.

              Show
              timhunt Tim Hunt added a comment - I don't know what happened before, but when I test again, multianswer questions are fine. So, this is now ready for integration. We just need to wait for 2.6 to be released, then we can rebase this.
              Hide
              mkassaei Mahmoud Kassaei added a comment -

              Rebased on latest version of master (Moodle 2.7 dev)
              See https://github.com/mkassaei/moodle/compare/master...MDL-32523

              Show
              mkassaei Mahmoud Kassaei added a comment - Rebased on latest version of master (Moodle 2.7 dev) See https://github.com/mkassaei/moodle/compare/master...MDL-32523
              Hide
              poltawski Dan Poltawski added a comment -

              The main moodle.git repository has just been updated with latest weekly modifications. You may wish to rebase your PULL branches to simplify history and avoid any possible merge conflicts. This would also make integrator's life easier next week.

              TIA and ciao

              Show
              poltawski Dan Poltawski added a comment - The main moodle.git repository has just been updated with latest weekly modifications. You may wish to rebase your PULL branches to simplify history and avoid any possible merge conflicts. This would also make integrator's life easier next week. TIA and ciao
              Hide
              mkassaei Mahmoud Kassaei added a comment -

              I have rebased this on latest main Moodle git repository

              Show
              mkassaei Mahmoud Kassaei added a comment - I have rebased this on latest main Moodle git repository
              Hide
              marina Marina Glancy added a comment -

              Hi Mahmoud, this is a very nice change!
              Please correct the following:
              1. class definition must have phpdocs block with class description, copyright and package
              2. there are trailing whitespaces in question/type/edit_question_form.php line 247
              and the most important
              3. this issue needs behat test, all other buttons have tests in question/tests/behat/*.feature
              I can help you with behat test if you need it

              Show
              marina Marina Glancy added a comment - Hi Mahmoud, this is a very nice change! Please correct the following: 1. class definition must have phpdocs block with class description, copyright and package 2. there are trailing whitespaces in question/type/edit_question_form.php line 247 and the most important 3. this issue needs behat test, all other buttons have tests in question/tests/behat/*.feature I can help you with behat test if you need it
              Hide
              marina Marina Glancy added a comment -

              linking to the css issue I found: MDL-43284

              Show
              marina Marina Glancy added a comment - linking to the css issue I found: MDL-43284
              Hide
              cibot CiBoT added a comment -

              Moving this reopened issue out from current integration. Please, re-submit it for integration once ready.

              Show
              cibot CiBoT added a comment - Moving this reopened issue out from current integration. Please, re-submit it for integration once ready.
              Hide
              mkassaei Mahmoud Kassaei added a comment -

              Thanks Marina, I have done the suggested changes and wrote a behat test (I have not checked them in becasue I need to run behat before doing so). However, I has some issue with installing behat for windows.

              I get the follwoing message:

              Connection Error [ERR_CONNECTION]: Unable to connect to getcomposer.org

              Request to https://getcomposer.org/installer failed with errors:
              Failed to open stream: No connection could be made because the target machine actively refused it.

              I can see the php code when I go to https://getcomposer.org/installer

              Show
              mkassaei Mahmoud Kassaei added a comment - Thanks Marina, I have done the suggested changes and wrote a behat test (I have not checked them in becasue I need to run behat before doing so). However, I has some issue with installing behat for windows. I get the follwoing message: — Connection Error [ERR_CONNECTION] : Unable to connect to getcomposer.org Request to https://getcomposer.org/installer failed with errors: Failed to open stream: No connection could be made because the target machine actively refused it. – I can see the php code when I go to https://getcomposer.org/installer
              Hide
              marina Marina Glancy added a comment -

              Hi Mahmoud,
              please try the following (from http://docs.moodle.org/dev/Acceptance_testing#Installation)

              If you don't have curl installed or you have problems running curl http://getcomposer.org/installer | php:
               
                  Download http://getcomposer.org/installer
                  Store it in /your/moodle/dirroot/composerinstaller.php for example
                  Run it from /your/moodle/dirroot with php composerinstaller.php, you can delete this file after running the next step (php composer.phar update --dev) 

              Show
              marina Marina Glancy added a comment - Hi Mahmoud, please try the following (from http://docs.moodle.org/dev/Acceptance_testing#Installation ) If you don't have curl installed or you have problems running curl http://getcomposer.org/installer | php:   Download http://getcomposer.org/installer Store it in /your/moodle/dirroot/composerinstaller.php for example Run it from /your/moodle/dirroot with php composerinstaller.php, you can delete this file after running the next step (php composer.phar update --dev)
              Hide
              mkassaei Mahmoud Kassaei added a comment -

              I have written a behat test-file for this, However, I have not tested it because I had some issues with my local server and behat installation after updating my master branch.

              In terms of the order of integration, this should be integrated before

              https://tracker.moodle.org/browse/MDL-33839
              and
              https://tracker.moodle.org/browse/MDL-33653

              I have just rebased this on latest version of Moodle master

              Show
              mkassaei Mahmoud Kassaei added a comment - I have written a behat test-file for this, However, I have not tested it because I had some issues with my local server and behat installation after updating my master branch. In terms of the order of integration, this should be integrated before https://tracker.moodle.org/browse/MDL-33839 and https://tracker.moodle.org/browse/MDL-33653 I have just rebased this on latest version of Moodle master
              Hide
              cibot CiBoT added a comment -

              Results for MDL-32523

              • Remote repository: git://github.com/mkassaei/moodle.git
              Show
              cibot CiBoT added a comment - Results for MDL-32523 Remote repository: git://github.com/mkassaei/moodle.git Remote branch MDL-32523 to be integrated into upstream master Executed job http://integration.moodle.org/job/Precheck%20remote%20branch/523 Details: http://integration.moodle.org/job/Precheck%20remote%20branch/523/artifact/work/smurf.html
              Hide
              cibot CiBoT added a comment -

              Results for MDL-32523

              • Remote repository: git://github.com/mkassaei/moodle.git
              Show
              cibot CiBoT added a comment - Results for MDL-32523 Remote repository: git://github.com/mkassaei/moodle.git Remote branch MDL-32523 to be integrated into upstream master Executed job http://integration.moodle.org/job/Precheck%20remote%20branch/538 Details: http://integration.moodle.org/job/Precheck%20remote%20branch/538/artifact/work/smurf.html
              Hide
              timhunt Tim Hunt added a comment -

              Mahmoud, I just pushed three small commits on top of your work: https://github.com/timhunt/moodle/compare/master...MDL-32523 Are you happy with those changes?

              Show
              timhunt Tim Hunt added a comment - Mahmoud, I just pushed three small commits on top of your work: https://github.com/timhunt/moodle/compare/master...MDL-32523 Are you happy with those changes?
              Hide
              timhunt Tim Hunt added a comment -

              Mahmoud checked out my new commits, and was happy. I squashed two into the main commit, and left the third one separate. I hope that makes sense.

              Submitting for integration.

              Show
              timhunt Tim Hunt added a comment - Mahmoud checked out my new commits, and was happy. I squashed two into the main commit, and left the third one separate. I hope that makes sense. Submitting for integration.
              Hide
              damyon Damyon Wiese added a comment -

              Thanks Tim and Mahmoud Kassaei,

              Looks good to me, + passes all tests.

              Integrated to master only.

              Show
              damyon Damyon Wiese added a comment - Thanks Tim and Mahmoud Kassaei, Looks good to me, + passes all tests. Integrated to master only.
              Hide
              marina Marina Glancy added a comment -

              works good, thanks

              Show
              marina Marina Glancy added a comment - works good, thanks
              Hide
              stronk7 Eloy Lafuente (stronk7) added a comment -

              I won't be saying "Thanks!" this week. I'm tired of it.

              For the good (and the bad), your code is now part of Moodle, the best LMS in the world. Hope you are contributing for that to continue being a fact (and not the opposite), sincerely.

              Just closing this as fixed, ciao

              PS: Just a bit of black/cruel humor, sorry, LOL!

              Show
              stronk7 Eloy Lafuente (stronk7) added a comment - I won't be saying "Thanks!" this week. I'm tired of it. For the good (and the bad), your code is now part of Moodle, the best LMS in the world. Hope you are contributing for that to continue being a fact (and not the opposite), sincerely. Just closing this as fixed, ciao PS: Just a bit of black/cruel humor, sorry, LOL!

                People

                • Votes:
                  7 Vote for this issue
                  Watchers:
                  9 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved:
                    Fix Release Date:
                    12/May/14