Proyectos de Subversion Moodle

Rev

Rev 1 | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1441 ariadna 1
=== 4.5 Onwards ===
2
 
3
This file has been replaced by UPGRADING.md. See MDL-81125 for further information.
4
 
5
===
1 efrain 6
This files describes API changes for question type plugins.
7
 
8
=== 4.0.2, 4.1 ===
9
 
10
* There was one issue caused by the changes in Moodle 4.0 which requires changes in question types,
11
  and that is regrading. There are two new methods which some question types will need to implement,
12
   - validate_can_regrade_with_other_version
13
   - update_attempt_state_data_for_new_version
14
  these methods are introduced in this commit, and there are details PHPdoc comments about what they
15
  must do. Then the immediately following commits implement them in the core question types where
16
  they are required.
17
  Generally, you will need to implement one or both of these if you question type does something
18
  significant in the apply_attempt_state method. If you have not implemented that method, then
19
  almost certainly you don't need to worry about this.
20
 
21
 
22
=== 4.0 ===
23
 
24
* The major question bank changes should not affect most basic question type plugins.
25
  The navigation changes may affect Behat tests. If you encounter this,
26
  the best way to fix it is to use the new navigation steps in MDL-74130.
27
 
28
* The qualification 'most' is because some question types do more complex things, which
29
  will require changes related to question versionning. Some examples that come to mind:
30
   - the way qtype_mulitanswer (or qtype_combined) aggregates several sub-questions into a parent question.
31
   - the way some contrib plugins (e.g. qtype_stack, qtype_pmatch) store additional data (question tests)
32
     linked to questions. That relationship will need to be updated.
33
 
34
 
35
=== 3.11 ===
36
 
37
* Introducing the following \question_type base class methods to save/fetch the last form values
38
  that were used when creating questions as the new defaults when creating new questions:
39
  - \question_type::get_default_value()
40
    - Fetches the default value for a given question field from the user preference.
41
      Question type plugins can use this in edit_{qtypename}_form.php when using $mform->setDefault().
42
  - \question_type::set_default_value()
43
    - Saves the default value for a given question form field in the user preferences.
44
  - \question_type::save_defaults_for_new_questions()
45
    - Saves the question type plugin's defined form defaults into the user preferences.
46
      It calls \question_type::set_default_value() to save each form field default value
47
      into the user preferences.
48
    - Question type plugins using \question_type::get_default_value() for their form fields must implement
49
      this in order to save the values from these form fields as defaults for new questions.
50
 
51
  This will help teachers who repeatedly create questions and use the same values for the fields
52
  (e.g. Default mark, Penalty for each incorrect try, etc.) in the question edit form.
53
 
54
 
55
=== 3.8 ===
56
 
57
* There is a new method for question types get_extra_question_bank_actions.
58
  Assuming the question bank display is using the new 'edit_menu_column'
59
  (which it will be by default) this method lets you add question-type-specific
60
  actions to the menu. The question_type base class has extensive PHPdoc comments
61
  on the method to explain what you should do, and there is an example of how to
62
  use it in a question type at
63
  https://github.com/moodleou/moodle-qtype_pmatch/commit/2aefa8b5dcc7bab768f4707a4ffb7befcf4c2540.
64
 
65
 
66
=== 3.8, 3.7.3, 3.6.7 ===
67
 
68
* Coming up in Moodle 3.8 are some changes to the question bank UI. These will break any
69
  Behat automated tests which use the common pattern
70
    When I click on "Duplicate" "link" in the "Test question" "table_row"
71
  to trigger actions on questions when looking at the question bank screen. Therefore,
72
  a new step has been introduced:
73
    When I choose "Duplicate" action for "Test question" in the question bank
74
  If you want your Behat tests to continue working with Moodle 3.8, you will need to use
75
  the new step. The new step has been back-ported, so you can start updating your tests
76
  and have them work with Moodle 3.6 and 3.7. In addition, if you want to trigger the
77
  "Edit" action, you should change that to "Edit question".
78
 
79
 
80
=== 3.5 ===
81
 
82
  + Added new classes backup_qtype_extrafields_plugin and restore_qtype_extrafields_plugin
83
   in order to use extra fields method in backup/restore question type. Require and inherit new classes for using it. See
84
   backup_qtype_shortanswer_plugin and restore_qtype_shortanswer_plugin for an example of using this.
85
  + The declaration of is_gradable_response has been moved from question_automatically_gradable to
86
   question_manually_gradable.
87
  + The default implementation of is_gradable_response has been moved from question_graded_automatically to
88
   question_with_responses.
89
  + Note that format_text() is no longer applied to the results of
90
   qtype_elements_embedded_in_question_text_renderer::embedded_element(). If question type overrides
91
   this method make sure you apply format_text() to any text that came from a user.
92
 
93
=== 3.1.5, 3.2.2, 3.3 ===
94
 
95
* If you are using check_combined_feedback_file_access in your check_file_access method,
96
  then you must now pass $args as the 4th argument, so the correct permission checks
97
  can be performed. If you don't, you will get a developer debug notice.
98
 
99
=== 3.1 ===
100
 
101
* The following functions, previously used (exclusively) by upgrade steps are not available
102
  anymore because of the upgrade cleanup performed for this version. See MDL-51580 for more info:
103
    - qtype_essay_convert_to_html()
104
 
105
=== 2.7 ===
106
  + We have added a new method to the question_type base class 'break_down_stats_and_response_analysis_by_variant'. By default it
107
   returns true. If your question type does not have variants of question instances then you can ignore this method as it only
108
   applies to question types that have variants. If a question type does have variants the default action is to break down
109
   response analysis and question stats by variant. But for some question types there might be an almost infinite quantity of
110
   variants for the question, in this case you can suppress break down by variant by returning false from this method. See for
111
   example the non-core question type varnumeric or the slightly more complex stack question type.
112
  + We have added a pair of methods to the question_definition class 'prepare_simulated_post_data' and
113
  'get_student_response_values_for_simulation'. You may want to override these methods in question.php in your question type plug
114
   -in. These methods are used to convert data from a csv file of simulated step data into the simulated post data that is fed
115
   to the question engine. These csv files can be used for unit testing or manual testing the use of your question type within the
116
   quiz module.  You  can use the simulate quiz report for manual testing and also to easily generate csv test files. You can
117
   run a number of students through a test and then download a csv file representing their interaction with the quiz. For most
118
   question types the default of just passing csv data as post data, directly from the csv file will probably work fine. But for
119
   certain question types where the meaning of the post data is deliberately obfuscated it might be necessary to convert from a
120
   human friendly format in the csv file to response data expected by the question type using 'prepare_simulated_post_data' and
121
   to convert back from a question type response array to values for download in a csv file using
122
   'get_student_response_values_for_simulation'.
123
=== 2.6 ===
124
  + The changes in MDL-32750 were reverted in favour of the new pdw toggle toolbars
125
    plugin for TinyMCE. The get_non_collapsible_editor_options method has been deprecated.
126
 
127
=== 2.5 ===
128
 
129
* There have been some tweaks to the helper class that is used to write
130
  walkthrough tests. You should not have to change your code, but you might
131
  like to take a look at some of the new helper methods available. In particular,
132
  if you had any code that did
133
  $this->process_submission(array('-finish' => 1));
134
  you should change that to
135
  $this->finish();
136
 
137
* There have been lots of usability improvements to the question editing forms.
138
  MDL-37417 links to all the changes. There are only a few API changes that
139
  *require* you to upgrade your question type, but you are strongly recommended
140
  to make similar usability improvements in your own question types.
141
 
142
  + Some of the ids used in the form HTML have had ‘id_’ added at the front.
143
    Take care if you refer to these in your JavasSript or CSS.
144
 
145
  + MDL-32750 The HTML editing tools are now collapsed. This is applied by default
146
    to all HTML editors except question text and general feedback. If you want to
147
    add more exceptions, see the get_non_collabsible_editor_options method.
148
 
149
  + Form fields have been grouped onto one line where appropriate, to reduce
150
    the height of the form. qtype_numerical is a good example of this.
151
 
152
  + Where elements are in groups, we have changed the normal accesshide CSS, so
153
    that their labels are visible. If you were using grouped elements in the past
154
    with static elements to lable the fields, then you will need to remove the statics.
155
 
156
  + All the choices / answers have been merged into a single section of the form.
157
    This works better with the new 'shortforms' MDL-30637. Also the
158
    "Add blanks for more ..." buttons are now inside that section. This probably
159
    requries that you remove any headings from your per-answer fields, and change
160
    some of the labels.
161
 
162
  + Having merged all the elements into one form section, we then used CSS to
163
    visually group the fields for one choice, answer, etc.
164
 
165
  + When editing an existing question, we only show as many repeats are are
166
    actually needed until the user clicks the "Add blanks for more ..." button.
167
    Where you have your own repeat elements, you may need to change the
168
    number of repeats calculation.
169
 
170
  + As with all forms, setType() is now required for all text form elements.
171
 
172
  + A good example of a question type being upgraded to take account of all these
173
    changes is
174
    https://github.com/moodleou/moodle-qtype_pmatch/commit/9d8e1beb9f780246416a0f3a7622f700b8fa90c8
175
 
176
 
177
=== 2.3.5 / 2.4.2 / 2.5 ===
178
 
179
* The special value question_attempt::PARAM_CLEANHTML_FILES that could be used
180
  in the get_expected_data method was renamed to question_attempt::PARAM_RAW_FILES
181
  in order to fix a bug. We failed to think this throught, and so did not realised
182
  that this might break some question types. If this affected your question type,
183
  please accept our apologies. Details in MDL-37847.
184
 
185
 
186
=== 2.3 ===
187
 
188
* Support for backwards-compatible string names dropped. MDL-30120. (See under 2.2 below.)
189
* If you are overriding export_to_xml and import_from_xml to provide Moodle XML format
190
  import and export, then you will probably get PHP strict syntax notices in developer
191
  debug mode until you change the method signature to include qformat_xml $format.
192
  That is, you need to specify the argument type.
193
* qtype_xxx_pluginfile() is now given the 7th parameter (hopefully the last
194
  one) that contains additional options for the file serving. The array should
195
  be re-passed to question_pluginfile() as is.
196
 
197
 
198
=== 2.2 ===
199
 
200
* The XML import/export base class has had some minor API changes. The
201
  - write_combined_feedback method now requires that you pass the questionid and
202
    contextid. (MDL-29058)
203
  - calls to the import_hints and import_answer methods now should pass the question
204
    text format as the last argument, to be used as a default if necessary. (MDL-29739)
205
  If you do not upgrade your code, it will not break, but there will be PHP
206
  warnings, and it the export will not work 100% correctly.
207
 
208
* The old
209
    public function requires_qtypes()
210
method is no more. Instead use the ->dependencies facility in version.php. E.g.
211
$plugin->dependencies = array(
212
    'qtype_numerical' => 2011102700,
213
);
214
 
215
* The plugin name and related strings used to be defined in language strings
216
called the same thing as the format, for example:
217
 
218
$string['addingdescription'] = 'Adding a Description';
219
$string['description'] = 'Description';
220
$string['description_help'] = 'A description is not really a question type. It simply enables text to be displayed without requiring any answers, similar to a label on the course page.
221
$string['description_link'] = 'A description is not really a question type. It simply enables text to be displayed without requiring any answers, similar to a label on the course page.
222
$string['descriptionsummary'] = 'This is not actually a question. Instead it is a way to add some instructions, rubric or other content to the activity. This is similar to the way that labels can be used to add content to the course page.';
223
$string['editingdescription'] = 'Editing a Description';
224
 
225
All these need to be changed to use the standard string name pluginname, as for
226
other plugin types, and similar for the other strings.
227
 
228
$string['pluginname'] = 'Description';
229
$string['pluginname_help'] = 'A description is not really a question type. It simply enables text to be displayed without requiring any answers, similar to a label on the course page.
230
$string['pluginname_link'] = 'A description is not really a question type. It simply enables text to be displayed without requiring any answers, similar to a label on the course page.
231
$string['pluginnameadding'] = 'Adding a Description';
232
$string['pluginnameediting'] = 'Editing a Description';
233
$string['pluginnamesummary'] = 'This is not actually a question. Instead it is a way to add some instructions, rubric or other content to the activity. This is similar to the way that labels can be used to add content to the course page.';
234
 
235
The old strings will continue to work, but only until Moodle 2.3 is released.
236
 
237
* If you are using the facilities provided by overriding the extra_answer_fields
238
  or questionid_column_name methods, then you must change these to be public
239
  methods. (This is required so that backup and restore can be made to work
240
  automatically. MDL-24408, MDL-25617, MDL-30562)
241
 
242
 
243
=== 2.1 ===
244
 
245
* Lots of API changes due to the new question engine. See
246
http://docs.moodle.org/dev/Developing_a_Question_Type#Converting_a_Moodle_2.0_question_type
247
 
248
 
249
=== 2.0 ===
250
 
251
* Lots of changes due to all the API changes in Moodle 2.0.
252
 
253
* This plugin type now supports cron in the standard way. If required, Create a
254
  lib.php file containing
255
function qtype_mypluginname_cron() {};