","Indent/outdent plugins should not usetag as inappropriate, setting a class 'indent' seems to be the best.",100 +"MDL-44225","02/17/2014 04:21:00","Atto: Focus lost in the Equation editor after inserting a symbol","Focus lost in the Equation editor after inserting a symbol, the cursor should remain at the same place to insert multiple symbols at once. ",5 +"MDL-44226","02/17/2014 04:21:24","Atto: Simplifying the 'accessibility checker' to display sensible content","Simplifying the 'accessibility checker' to display a sensible content rather than the entire node .... ",13 +"MDL-44227","02/17/2014 04:21:59","Atto: The screenreader helper/accessibility checker should always display something for missing images","The 'screenreader helper' should always display something for missing images. Currently images without an alt tag are reported but not identifiable.",8 +"MDL-44228","02/17/2014 04:22:44","Atto: Being able to see the list of plugins available in the settings UI","Being able to see the list of plugins available in the settings UI. See TinyMCE for an example. ",8 +"MDL-44240","02/17/2014 04:37:23","Atto: Combine plugins indent/outdent into one.","Combine plugins indent/outdent into one. ",5 +"MDL-44241","02/17/2014 04:37:29","Atto: Combine plugins link/unlink into one","Combine plugins link/unlink into one. ",8 +"MDL-44243","02/17/2014 04:38:16","Atto: Prettifying the HTML when switching to HTML view","Prettifying the HTML when switching to HTML view. We can use js-beautify (MIT License) for this purpose.",5 +"MDL-44316","02/24/2014 05:07:43","Change the tag API to include the contextid and component when tagging an item.","We want to update the database table 'tag_instance' so that the contextid and component are stored. This will allow for easy deletion of tags when cleaning up particular areas of Moodle, it will also be consistent with other parts of the Moodle API - eg. the file area.",40 +"MDL-44338","02/25/2014 08:09:11","Show move drag handle in header for ""Add a block"" block","Issue MDL-43723 changes the block drag and drop so it only works on the drag handles and not the entire header. This is being removed because it causes issues when scrolling on mobiles, and is not consistent with drag and drop in other areas of Moodle. With this change only - it is no longer possible to move the ""Add a block"" block - because for some reason it does not show the drag icon. Make it so.",8 +"MDL-44340","02/25/2014 09:06:54","Replace add_to_log in mod_workshop (part 2)","Unfinished after MDL-40921: {code} $git grep add_to_log mod/workshop/locallib.php: call_user_func_array('add_to_log', $args); {code}",13 +"MDL-44361","02/26/2014 04:31:11","Update to YUI 3.15.0","Released this week and addressing a number of issues that we've patched in the mean-time.",5 +"MDL-44366","02/26/2014 06:38:12","filter_glossary has the potential to be slow on large sites","As a follow-on to MDL-43524 which removed global text caching, we need to examine the glossary filter and probably add MUC caching there to improve performance. The glossary filter is what puts links in texts to glossary entries. There is quite a lot of processing going on in the background even before the simple text replacement, and this needs to be redone every time the cache is invalidated. Petr has raised that the fully correct way would be to use new events or the as-yet-unwritten hooks to invalidate the caches, but I think that might be too much to do before 2.7, so I want to see a quick solution here even if it may mean relying on less-perfect cache invalidation. This issue requires performance comparison tests before and after the fix.",40 +"MDL-44368","02/26/2014 06:55:59","filter_activitynames can be improved after dropping of global text cache","As a follow-on to MDL-43524 which removed global text caching, we need to examine the activity names filter and probably add MUC caching there to improve performance. The activitynames filter is what puts links in texts to other activities in the same course. Petr has raised that the fully correct way would be to use new events or the as-yet-unwritten hooks to invalidate the caches, but I think that might be too much to do before 2.7, so I want to see a quick solution here even if it may mean relying on less-perfect cache invalidation. Tests showing performance before/after are required. ",20 +"MDL-44370","02/26/2014 07:18:40","Incorrect urls for calendar logs in log and loglive reports","Calendar actions such as adding and editing events generate logs. The logs link to the page in the format course/event.php?action=edit&id=12931 in reports. This link generats a 404 error as the specified path does not exist.",3 +"MDL-44430","03/04/2014 04:12:17","Atto triggers required when still in focus","Not sure how best to describe this one, but: * Open a form and don't enter anything yet; * Do any of the following: ** Press the *Bold* button in the toolbar ** Click into the editor area, and use a keyboard shortcut for bold, italic, underline, etc. It seems that any time the content editable loses focus, we trigger various checks rather than any time the editor as a whole loses focus.",5 +"MDL-44447","03/04/2014 17:19:04","Grade - Add an option to export the total in letters","In gradebook, when we try to export the grades, we want to add an option that will add an new column at the end that is the total in letter (based on the grades-letters setting of the course.",40 +"MDL-44475","03/06/2014 03:16:48","Atto is using deprecated features and modules","Just a quick commit to tidy these up.",3 +"MDL-44478","03/06/2014 07:46:15","Remove duplicates in YUI rollup","When we converted from SimpleYUI, I must have made a transposition error. We include the same module twice in slightly different rollups. The first is never used as a result. The duplicates I've removed are: * yui-base; * get; * features; * loader-base; * loader-rollup; and * loader-yui3. These contain all of the metadata for Moodle, the loader itself, and the fetching mechanism. If they were broken in some other way, we would see a very large bang and no working Javascript within Moodle. To clarify, these were already included by us using 'yui' which is a rollup of the above 6 modules. File-size savings: || || Content size || Gzipped size || || Before | 388KB | 112KB | || After | 289KB | 86.6KB |",5 +"MDL-44500","03/07/2014 04:48:39","validate course id is matching context in new events","Theoretically somebody might supply inconsistent course id - context combination when triggering event, we can use some developer checks to warn about this problem...",2 +"MDL-44512","03/08/2014 08:22:53","Custom menu submenu arrows appear on the right on RTL languages","On bootstrapbase-based themes: # Create a custom_menu that consists of multiple levels (the example custom_menu is fine). # Install and switch to an RTL language (e.g. {{he}}). # Try using the custom menu. #* Observe that the submenus and their arrows appear on the right rather than the left. #* Observe that when activated, submenus are not where they are expected to be.",3 +"MDL-44523","03/10/2014 06:20:32","Define and correct edulevel in events","Educational level is inconsistently used in some of the places including reports. Documentation http://docs.moodle.org/dev/Event_2#Level_property doesn't consider all cases like report_participation etc. It would be nice to review all events and fix edulevel where required.",13 +"MDL-44596","03/13/2014 03:34:05","Declare interfaces supported by reports and implemented by stores.","We need to provide the following information to the admins:- # Each report should declare what interfaces it supports. # Each store should declare what interfaces it implements.",20 +"MDL-44597","03/13/2014 03:47:20","Add support for source maps with less.php","When compiling LESS from PHP in designer mode, we should add the source maps to make it easier to debug the CSS.",5 +"MDL-44627","03/13/2014 21:13:55","Show/hide, edit title, group mode module buttons don't trigger course_module_updated event","If you edit course-module and change only visibility, there are \core\event\course_module_updated for this. However when module visibility changed on the course page via specical icon there is no similar event. This is inconsistence. It is creates problem for the module, trying to react on it's visibility status changes (for example we are trying to emit special event when student is able to see assignment text in our poasassignment module).",8 +"MDL-44637","03/14/2014 08:09:58","Tool to list all events","As events are being added and updated, it is very hard to find which events are available and what data they store. We need a tool that is useful for two main user groups: # for analysts/researchers, to understand what data may be found in our logs # for developers, to understand what events are available to use The tool should: * Generate a list of all events in core * Include high-level descriptions of the event * List as much as possible about the payload data in the event * Filter/search by verb/module etc. * List the observers that are consuming those events. ",100 +"MDL-44704","03/20/2014 04:31:57","The \core\event\message_sent class should be passed the system context (for now).","It was decided in SCRUM that we should be passing the system context when sending messages.",3 +"MDL-44717","03/21/2014 06:48:27","Incorrect urls and strings in many events","Many of the events have incorrect urls. example:- return new \moodle_url('report/loglive/index.php', array('id' => $this->courseid)); return new \moodle_url('report/log/index.php', array('id' => $this->courseid)); etc There are some other issues with some events as well such as missing/incorrect strings etc.",20 +"MDL-44745","03/25/2014 10:27:54","Typo in mod assign fullname() function","$userid should be $user->id (Thanks Mark) This is a master only bug introduced by MDL-28448",5 +"MDL-44746","03/25/2014 10:30:28","Remove incorrect use of snapshots in events","We should not be using snapshots in the events other than in the functions get_legacy_logdata() and get_legacy_eventdata().",5 +"MDL-44748","03/25/2014 11:51:06","Make atto the default editor during upgrade","We do this for new installs, but should do so for ugrades too.",5 +"MDL-44749","03/25/2014 12:22:55","Collapse plugin should handle suboptimal toolbar configuration","Collapse plugin does not fail gracefully if there are fewer than n groups. If there are fewer groups, we should either: # fail gracefully; or # not add the button at all. I go for option 2. If the show groups count <= number of groups + 1, then we should not show the plugin IMO. I've gone for the groups+1 option because there's a strong chance that the plugin will be in a group of it's own and will thus take up a whole slot. It should also not be displayed if it will not be visible by default.",5 +"MDL-44751","03/25/2014 13:01:30","Update showgroups string in atto_collapse","As discussed in the demo yesterday: {code} ""Show first (n) groups when collapsed."" {code}",2 +"MDL-44752","03/25/2014 13:07:18","Correct uses of color => colour in atto plugin language strings","{code} accessibilitychecker/lang/en/atto_accessibilitychecker.php:$string['needsmorecontrast'] = 'The colors of the foreground and background text do not have enough contrast. To fix this warning, change either foreground or background color of the text so that it is easier to read.'; backcolor/lang/en/atto_backcolor.php:$string['pluginname'] = 'Background color'; fontcolor/lang/en/atto_fontcolor.php:$string['pluginname'] = 'Font color'; {code}",3 +"MDL-44754","03/25/2014 14:42:28","Explain the meaning of the group names in the toolbar configuration","They have no real meaning ATM but they need to be unique. This just needs explaining in the admin setting help.",3 +"MDL-44755","03/25/2014 14:44:58","Atto plugins are using different icons for the plugin / toolbar","Examples are the accessibility plugins - and some of the combined plugins. ",5 +"MDL-44756","03/25/2014 14:48:08","Atto collapse plugin setting help update","Change description to: ""Show first (n) groups when collapsed""",2 +"MDL-44757","03/25/2014 14:50:50","Change TeX help link in equation editor to point to a moodle docs page","And then the moodle docs page can point to good external references.",5 +"MDL-44758","03/25/2014 14:53:27","Atto: Prevent new table creation when within an existing table","For now, you can create a table in another table by: # Clicking the table icon when the cursor is in the caption # Selecting more than one cell # Click the table icon This also happens when you select the caption cell (at step 2). _Expected result:_ The table editing context menu will pop-up _Actual result:_ The new table creation dialogue appears and when you click to add a new table it doesn't work.",20 +"MDL-44759","03/25/2014 14:56:14","Atto Undo starts highlighted on an empty field","This is because we insert behind the scenes, but it gets caught in the undo stack. I think treating as '' in the undo plugin would fix this.",5 +"MDL-44760","03/25/2014 15:01:13","Atto menu styles are inconsistent","Atto drop down menu styles are currently using a new invented style - they should be changed to match other drop down menus in Moodle. Other menu styles in moodle are the course editing menus and the edit pdf menus. The Edit PDF menus were designed by Barbara, and the course editing ones were done by Sam. We should aim to make all 3 the same - but that is not this issue, this issue is just to pick a winner and make Atto look like that. ",20 +"MDL-44761","03/25/2014 15:04:06","Display the list of keyboard short cuts somewhere (in the alt for the buttons?)","And should take into account the current browser etc.",13 +"MDL-44762","03/25/2014 15:06:37","Atto title plugin bugs. It is possible to choose a title from the menu and nothing happens","Notes from demo: Menu isn't closed when selecting a title (or applied) (select, choose h2, select text, open menu, press escape, open menu press h2 - stays same) This happens on Firefox, not Chrome",13 +"MDL-44763","03/25/2014 15:10:32","Atto image plugin - remove the word ""Preview"" from the dialogue.","It's unnecessary.",2 +"MDL-44764","03/25/2014 15:12:46","Change wording in Atto image plugin","This is about the alt / decorative only fields. New wording: “Describe this image for someone who cannot see it” / “Description not necessary"" ",5 +"MDL-44765","03/25/2014 15:17:35","atto_image: Dialogue is not resized after the accessibility warning is displayed","Using the image plugin: * open the plugin * find an image * try to submit without setting alt or presentation Issue: The dialogue is not resized. This is fine for most users, but for users on small-height devices, the submit button may have dropped off the bottom of the page.",5 +"MDL-44768","03/25/2014 15:33:16","Atto: Save cursor position with undo/redo stack and restore it","This was a suggestion from Fred in the Atto demo.",40 +"MDL-44769","03/25/2014 15:36:36","Atto Table plugin caption field should be a text input, not a textarea","Simples.",3 +"MDL-44770","03/25/2014 15:41:42","Change table context menu, to open from the table button, not the table cell","Also maybe change the wording to e.g. ""Insert column after current cell"". ",8 +"MDL-44771","03/25/2014 15:44:13","Atto tables with long captions wrap into the table","This is a CSS bug in the table plugin styles.css - it sets a fixed height on the caption which should be a min-height.",5 +"MDL-44772","03/25/2014 15:46:22","Atto does not respect height of original text area field any more (it used to)","Something changed here, and now Atto is always huge. Yuk! (Seriously this is a real problem on long forms).",13 +"MDL-44773","03/25/2014 15:48:45","Accessibility checker does not trigger selection updated when it selects the image nodes","And so the image button in the toolbar is not highlighted. The Accessibility helper does this correctly.",5 +"MDL-44776","03/25/2014 15:57:46","Make Atto equation editor dialogue wider ","just a bit (keep mobile in mind too please)",5 +"MDL-44777","03/25/2014 16:00:06","Atto Equation Editor example toolbar should have consistently sized buttons","Set a min-width on the buttons in the examples toolbar, so they will line up better.",3 +"MDL-44778","03/25/2014 16:04:25","Atto equation editor, put a border around the preview","What it says",2 +"MDL-44780","03/25/2014 16:21:02","Enable MathJax filter by default","For new installs. Not sure about upgrades (you don't want 2 tex filters and you don't really know which other filters handle tex).",5 +"MDL-44781","03/25/2014 16:23:14","Reformat/rewrite the help text for MathJax (needs some line breaks) ","Reported by Andrew N",2 +"MDL-44782","03/25/2014 16:25:36","Fix lang string for Mathjax filter setting HTTP (Should be HTTPS)","What is says",2 +"MDL-44784","03/25/2014 17:39:56","Atto plugins with settings do not show settings links on manage plugins page.","Probably something to do with plugininfo.",20 +"MDL-44794","03/26/2014 11:30:02","get_groups(), get_groups_all() and groups_get_user_groups are not covered by unit tests","The following functions are used all over Moodle but are not currently covered by unit tests. Behat tests should cover them to a large degree but it would be nice to have additional assurance. 1) get_groups_all() and get_groups($groupingid = 0) in modinfolib.php do not appear to be covered at all in modinfolib_test.php. 2) groups_get_user_groups() in grouplib.php. groups_get_user_groups() is itself not tested at all in grouplib_test.php",8 +"MDL-44806","03/26/2014 15:30:08","Accessibility checker goes wide unnecessarily ","It would be better if it adapted to the content better.",5 +"MDL-44808","03/26/2014 15:57:26","The table creation box is huge, giving too much room to the accessibility info","The problem with this dialogue being so big, is it makes me want to see at the bottom for something important. It seems to me like this info is getting too much prominence. ",2 +"MDL-44810","03/26/2014 16:23:15","The bold/italics buttons don't maintain their selection when pressed","Steps to reproduce: # In atto, write ""Damo Rulez"" # Select the word ""Damo"" word and press bold button Expected result: The word ""Damo"" is formatted bold and the selection remains on ""Damo"" Actual result: The word ""Damo"" is formatted bold but the selection is not retained and the insertion point moves to the end of the word. NOTE: this is contrasting behaviour to google docs for eg. (and I guess MS Word etc)",5 +"MDL-44824","03/27/2014 10:53:48","Strings missing for some subplugins","Logstore subplugins are displayed on Plugins overview page as: ""Log store manager / logstore"" There is a string missing to translate internal name ""logstore"" Same with assignsubmission, assignfeedback, ltisource (I think we can ignore ""assignment 2.2"" subplugin)",2 +"MDL-44826","03/27/2014 13:39:47","Atto Too many image alignment options","I think superscript and subscript can be removed - probably some others too. We want to keep these interfaces simple.",5 +"MDL-44827","03/27/2014 13:43:39","Atto: Insert image fails on iOS 7","Buy me and iPhone and i'll fix it :)",13 +"MDL-44830","03/27/2014 15:04:57","Atto: Redo behaviour is a bit wonky","undo/redo can get a little confused so that there are duplicates on one of the stacks. A bit of testing multiple undo/redos shows this in action. ",8 +"MDL-44832","03/27/2014 17:05:21","mod_assign grading table menus do not show","Some new yui bug - the menus are positioned way off the screen. Probably easiest to move these to ""Edit"" menus like the course editing ones. The old ones could not be tested by behat anyway.",5 +"MDL-44844","03/28/2014 13:39:26","Custom menu broken in all non-bootstrap themes. ","The custom menu code uses the ""YUI3 menunav"" module (which is deprecated). For some reason this is broken in master (probably because of a yui update). Bootstrapbase provides it's own renderer for this which uses the yui module for bootstrap so it's not affected. I noticed this was broken in mod_assign and fixed it by converting to an action-menu - this doesn't really help with custom menu though. ",13 +"MDL-44846","03/28/2014 17:33:09","Atto font colors are broken in IE","This needs to be investigated, but in IE9: - Regardless of the text I have in the field, the form validation was reporting it as empty. - Switching to HTML view does not work And maybe other issues. Note: I might have played with fontcolor and backcolor during the test, mayve that is related.",8 +"MDL-44874","03/31/2014 20:22:52","Per-request temp directories","According to [the docs|http://docs.moodle.org/dev/Server_clustering_improvements_proposal#.24CFG-.3Etempdir]: ""If any script tries to use temp files that were not created during current request it is a bug that needs to be fixed."" Now in load balanced environment (without sticky sessions) with multiple web servers and local temp dirs defined on the web servers local file systems, there are at least two cases where files are used for more than the current request: - upload users via CSV - restoring course backups Trying to perform the above actions leads to errors and the inability to complete the actions unless the local tempidr ""$CFG->tempdir"" is removed from the configuration, losing the local tempdir functionality. This issue introduces a new function: {code} make_request_directory($exceptiononerror = true); {code} This can be used in the same way as make_temp_directory(), but it does *not* take a subdirectory as an argument. It always outputs the full path to the new directory, and ensures that it will be deleted after the request finishes.",40 +"MDL-44881","04/01/2014 12:11:07","The dialogue to pick a file in file picker is not nicely styled","See screenshots for the following: - The checkboxes are not well displayed - The padding on the right of the text inputs is too small, they seem to close to the edge - The info at the bottom do not have separator - When there is a separator at the bottom, it is glued to both sides - From an accessibility point of view, I'm pretty sure the file info are not properly ready as SPAN is not considered as a word separator - Margins below and above the fields seems unnecessarily high All themes are affected, so _clean_ and _base_ should be tested. To select _base_ pass ?theme=base to the URL.",20 +"MDL-44923","04/03/2014 03:54:19","The gradebook export xml format does not handle the settings ""Export new or updated grades only""","The setting ""Export new or updated grades only"" in the gradebook export xml format is only handled in the preview, not in the file. *To reproduce:* # Go to the gradebook in a course with some graded activity # Be sure to have an ID for each activity and for the course category in the gradebook # In the export section, select the XML format # Be sure to select ""Export new or updated grades only"" # Click Submit # The preview will only show the new or updated grades as expected # Click Download _Expected result:_ The exported file should only contain new or updated grades. _Actual result:_ The file will include all grades, not only the new or updated grades, which is wrong.",20 +"MDL-44927","04/03/2014 12:11:10","Atto: UX improvements for table editing.","It was discussed in Scrum and we are not yet happy with the table editing controls in Atto. We will probably move to a more comprehensive table editing dialogue in the future - but it is too late to start work on that for 2.7 - in the meantime there are 2 improvements that can be made to the context menu that will make it much nicer to use. 1. -Add an option to add/remove the caption for a table- 2. -Hide options that don't make sense when the menu opens (e.g. add caption to a table with a caption, move the left column to the left)- When I implemented this issue and tested it it still was confusing to use so I went further. I made the entries in the context menu hidden when they didn't make sense for the selected cell - and added a ""Edit table"" entry that opens a window to edit the caption and change the headers for the table.",13 +"MDL-44929","04/03/2014 13:04:34","Update to YUI 3.17.2","Due for release on Tuesday 8th April, during our code freeze week. Current history rollup is at https://gist.github.com/andrewnicols/9948045 but there are still a few items missing which will be integrated this week. We are currently affected by: * Drag/Drop broken for some devices in 3.15.0 whilst trying to fix Android (https://github.com/yui/yui3/pull/1721) * Calendar CSS in RTL (and non-RTL as it happens) (https://github.com/yui/yui3/issues/1685); and * Logging levels (minor and not yet in the history). Because Yahoo! are based in California, I suspect that we won't actually see this until Tuesday evening but I think that we should consider whether we allow this in anyway. From our PoV, it's only a patch release - I think it's a minor release from YUI's PoV because they're including a new Pure module in with the CSS which dictates a minor release rather than a patch. The drag/drop issue is the main consideration IMO.",8 +"MDL-44949","04/04/2014 13:00:29","Repository picking in Atto Image plugin broken","There is a bug in MDL-44000 that prevents picking an image from a repository.",2 +"MDL-45029","04/10/2014 03:27:28","Weight Defaults to Zero in Weighted Mean of Grades Aggregation Method","When adding new assignments to new courses, weight of grade in gradebook defaults to zero with the ""weighted mean of grades"" aggregation method in certain situations. If new assignment is added, and gradebook has been set to ""Simple Weighted Mean"" then switched to desired ""Weighted Mean of Grades"" aggregation, default weight will show up as 1.0 as is intended. However, once grading aggregation has been switched to ""Weighted Mean of Grades"", subsequent assignments added will have a default weight of 0 in the gradebook instead of intended 1.0. Steps to Reproduce: 1. Add new course and save. 2. Go to new course main page, click ""Turn on editing"" 3. Go to first available week, click ""Add an Activity or Resource"" 4. Click Assignment and Add 5. Name assignment, add description, click ""Save and Return to Course"" 6. Click Course Administration0, )] Error code: invaliduser Stack trace: line 1451 of /lib/dml/moodle_database.php: dml_missing_record_exception thrown line 1427 of /lib/dml/moodle_database.php: call to moodle_database->get_record_select() line 6404 of /lib/accesslib.php: call to moodle_database->get_record() line 107 of /blog/external_blog_edit.php: call to context_user::instance() Output buffer:
Notice: Undefined property: stdClass::$filtertags in /home/marina/repositories/int_master/moodle/blog/external_blog_edit.php on line 102
Notice: Undefined variable: newexternal in /home/marina/repositories/int_master/moodle/blog/external_blog_edit.php on line 107
Notice: Trying to get property of non-object in /home/marina/repositories/int_master/moodle/blog/external_blog_edit.php on line 107
{code}",8 +"MDL-45580","05/16/2014 04:59:39","PDF Annotations Remain After PDF is Replaced","When a student edits an assignment submission and deletes a PDF that was already annotated by the teacher and then adds a new PDF submission, the annotations given by the teacher for the old PDF remain in the new PDF. Steps to reproduce: # In any course, create an Assignment that allows file submissions. # As a student, submit a PDF file for the assignment. # As a teacher, annotate the student's PDF submission and save. # As the student, return to the assignment and click Edit Submission. # Delete the existing PDF file and upload a new PDF file. Save changes. # As the teacher, access assignment and click View/grade All Submissions. # Click Grade icon under Grade column for the same student. # Launch PDF editor and observe Expected results: Annotations from the old PDF file should not display in the new PDF submission. Actual results: Annotations from the old PDF file are retained and display in the newly submitted PDF file. ",20 +"MDL-45594","05/17/2014 02:35:41","Fix use of ORDER BY id in the messaging system","h5. *TO PEER REVIEWER* There are two diffs to review here, please comment on which you think is the better solution; or if you think neither of them are. Mark's: https://github.com/markn86/moodle/compare/master...MDL-45594_master Tim's: https://github.com/markn86/moodle/compare/master...MDL-45594_master_alt ----- See MDL-35453. Problem lines of code: {noformat} message lib.php (3 matches) 715: SELECT mr1.useridto AS userid, MAX(mr1.id) AS mid 721: SELECT mr2.useridfrom AS userid, MAX(mr2.id) AS mid 732: ORDER BY mr.id DESC""; 741: SELECT m1.useridto AS userid, MAX(m1.id) AS mid 747: SELECT m2.useridfrom AS userid, MAX(m2.id) AS mid 758: ORDER BY m.id DESC""; 799: ORDER BY mr.id DESC"";//ordering by id should give the same result as ordering by timecreated but will be faster {noformat}",20 +"MDL-45611","05/19/2014 18:10:07","Question text overlaps other parts of the UI on the edit quiz page.","On the edit quiz page, the question text for random questions overlaps the Maximum mark input box and other things. See the screen grab. To reproduce: # Add a new quiz to a course. # Add several questions to a category in the question bank. # On the edit quiz page, add a random question selecting from that category to the quiz. # Observe overlap as in the screen-grab.",13 +"MDL-45652","05/21/2014 19:26:33","When restoring a backup, if no category or course is selected the page reloads with no error message","If you restore a backup and at the Destination stage, you choose to create a new course but do not select a category, the page reloads upon pressing the Continue button. There needs to be an error message stating why the page reloads, as currently it's not obvious that you've forgotten to select which course. *Steps to replicate:* # Log in as admin/course creator # Click 'Restore' in Site Administration # Upload a backup # At destination stage, Click the Continue button under ""Restore as a new course"" without selecting a category. _Expected Result:_ The page would reload and generate an error telling you that you must select a category to restore to _Actual result:_ The page reloads with no indication as to why it reloaded.",8 +"MDL-45721","05/28/2014 16:22:55","The \core\event\course_restored event is triggered on any restore, not just courses.","# Visit a course. # Duplicate an activity. # Notice there is a 'course restored' event.",5 +"MDL-45754","05/29/2014 13:48:54","Backup and restore of logs in 2.7 and above","New logging API does not support backup and restore of logs",100 +"MDL-45772","05/30/2014 11:16:42","Some forms with passwords and usernames get populated by the browser, which is not desired","When i tried to create a new group in a course, my username and password were pre-populated in the group id and the password for the group. step 1: create group in a course step 2: look at the pre-populated fields (group id and password) they are the same as my LDAP username and password. I had a colleague log in on my machine with his credentials and my details were pre-populated. When my colleague logged in on his machine his details were pre-populated My thoughts are if they are pre-populating here then were else are they populating. I have cleared cache. logged out then back in again Regards Brendan",20 +"MDL-45780","05/30/2014 23:22:16","Neither formchangechecker, nor quiz autosave detects changes in Atto editors","Both quiz autosave code mod/quiz/yui/src/autosave/js/autosave.js, and lib/yui/src/formchangechecker/js/formchangechecker.js require special code to work with TinyMCE. It seems that it they will alos need special code to work with Atto, but no-one has written that. To reproduce (Quiz) # (Optional) Add $CFG->forced_plugin_settings = array('quiz' => array('autosaveperiod' => 3)); to your config.php to make thes easier to test. (Just a 3 second delay between a change and an auto-save.) # Ensure you have a default set-up using Atto, not TinyMCE or another editor. # Create a quiz containing one essay question, that uses the 'HTML editor with file picker' response type. # Attempt the quiz, and Open the console. (The autosave code outputs useful debug messages to tell you what is going on - assuming you have developer debug on.) # Type something in Atto, and verify that 3 seconds later (or whatever delay you set) an autosave ajax request happens. # Add an image to Atto using the filepicker, and verify that cause an autosave too. To reproduce (Formchangechecker) # Go to a form, and click to make a new post. # Type an X in the message box. # Click the back button. You should get a warning that you are about to leave a page with unsaved data, but you don't.",13 +"MDL-45827","06/04/2014 14:14:48","Specify the requirements for the element library","This should be a dev docs page describing the element library tool, and describing how a developer would add a renderable/renderer method to the tool. It should list the mandatory and optional features for this tool requires in order to meet the goals specified in: http://docs.moodle.org/dev/Render_library_specification#Element_library_and_style_guide",5 +"MDL-45828","06/04/2014 14:16:48","Create the element library admin tool","Implement the admin tool defined in MDL-45827",8 +"MDL-45829","06/04/2014 14:23:23","Define the initial list of renderables to be added to the element library","The proposed categories for renderables are: Elements Components (built of smaller elements) Layouts (structured arrangements of smaller components/elements/layouts) The names of these categories needs to be agreed on, and docs created to describe each category. An (early) list of renderables is defined here: http://docs.moodle.org/dev/Render_library_specification#Initial_thoughts_on_renderables_and_what_we_should_provide_.28Draft.29 This list needs reviewing and categorising. ",20 +"MDL-45830","06/04/2014 14:27:05","Define style guide for renderables","This document should go hand in hand with the element library, but will define best practices to follow when creating the default implementations of renderables. See: http://docs.moodle.org/dev/Render_library_specification#Style_guide",40 +"MDL-45833","06/04/2014 16:25:21","Debugging error when changing roles in category","I encountered the following message: {code} Inconsistent courseid - context combination detected. line 247 of /lib/classes/event/base.php: call to debugging() line 144 of /admin/roles/override.php: call to core\event\base::create() {code} to replicate - # open course category, # click on ""permissions"", # select any role from ""Advanced"" dropdown # Change any permission I'll create a related improvement to trigger event from inside of assign_capability()",5 +"MDL-45853","06/05/2014 05:56:20","Document renderer best practices","As part of the the [Render library specification|http://docs.moodle.org/dev/Render_library_specification] we agree that a best practices document was needed for the creation of renderers. It should include: * The do's and don't's of writing a render. * A best practices for output. * Any rules and recommendations in situations where elements cannot (or will not) be used. ",20 +"MDL-45854","06/05/2014 06:02:25","Define and document JavaScript output guide","As part of the the [Render library specification|http://docs.moodle.org/dev/Render_library_specification] we need to establish how the relationship between JavaScript and output should exist. This involves deciding if handlebars is what we want to use, how we want to use it, how it ties in with renderers and elements, and then documenting the process thoroughly. We should also consider here how to document elements and the JavaScript components that ship with them. ",40 +"MDL-45862","06/05/2014 11:46:42","Convert forum post display to templates","This will make modifying the forum layout easier and clearer. We will need to create a number of renderables, and it may be necessary to break this task down further to smaller areas of focus: * posts; * discussions; * thread list; and * other areas.",100 +"MDL-45885","06/06/2014 08:40:48","Decide and document output components","This is an essential part of the task - unfortunately the approaches are broad and what we choose now we have to commit to and live with. It has to meet our needs now and in the future. Some of the things that need to factor into this decisions are: *Element and component re-use* Re-use is key to this approach. We want to have components containing existing elements and components, and when we want to change how an element looks we want that change reflected in all uses of the element within other components that don't require it to look different. This way you can style a button and instantly have the look updated across other components like search forms containing buttons. *Elements and components can be complex* Elements don't need to be easy to write - they should be feature full and limited in number. Developers should not write components instead they should be re-using the available elements and components. *Overriding a render to change how an element must be both easy and robust* Re-use is key as per the above point. However we need to achieve this in such a way that we don't introduce magic and keep things simple to understand and override. We have to be able to deal with state and attribute requirements of the element in relation to its parent component and do it in such as way that the state is owned by the component and attributes are owner by the render method. and keep it all understandable. ",40 +"MDL-45893","06/06/2014 15:33:20","Developing a User Menu","Adding a User Menu, in the bootstrapbase themes; refer to the specification to know what it should contain, and how to implement it. The general approach here is to refactor the existing navbar's capabilities, allowing it to support multiple dropdowns without adversely affecting existing DOM structure (which would necessitate every theme re-targeting its styles). Update 10/06/2014: The user menu is being rendered fine, but the current solution doesn't quite encapsulate everything that'll need to happen with the navbar; in particular, page_heading_menu() stuff isn't handled by this solution as it doesn't really make sense for that stuff to live in a dropdown. Update 24/06/2014: Okay, this turned out to be huge. - The new {{user_menu}} renderable is an extension of the {{custom_menu}} renderable, constructed with references to a user, a course, a page and an array of flags (at present, the only thing that makes sense to set _a priori_ is {{guest}}, a boolean flag). -- Basing the new renderable on the {{custom_menu}} allows for it to be easily displayed in Base-based themes as well. -- A minor bug in {{custom_menu}}'s YUI3 dropdown code was fixed: in brief, the logic was looking for a dropdown attribute on the node that was clicked (e.target) instead of the node that the event was actually wired to (e.currentTarget). - {{custom_menu}} renderables have been extended by way of MDL-46022 and have also gained the ability to assign CSS suffix flags to {{custom_menu_item}}s - which is necessary for us to avoid having to hardcode icons into the renderer PHP. - In order to support multiple collapsible menus, it was necessary to create an entire {{bootstrap_navbar}} renderable which renders the {{body > header}} element and renders out a collection of menus. Bootstrap javascript has been patched to allow for multiple navbar items. - Responsive styles have been provided.",100 +"MDL-45894","06/06/2014 15:37:10","For students: a single page with all their course grades on it","Create a page wherein a student will be able to see the grades for the courses currently visible to them. This should be a user-context page, not under Reports, in order to avoid sudden breadcrumb/navigation jumping. Once complete, a link to this page should be added to the *user menu*.",20 +"MDL-45897","06/06/2014 15:57:27","Add more blocks to the default 'my home' page","Adding more content to *my home*. Refer to [the spec|http://docs.moodle.org/dev/Navigation_overhaul_specification#Revisiting_.27My_home.27_page_2] for more information.",13 +"MDL-45916","06/09/2014 13:14:27","Event monitor: Finalise the basic file and database structure","Commit the basic file structure with the following:- # Directory structure # xmldb files # permissions (db/access.php)",20 +"MDL-45918","06/09/2014 15:13:58","Event monitor: Create a rule manager class with unit tests","Create a class report_monitor\rule_manager that lets you # Create rules # Edit rules # Delete rules # get rules # Get rule With unit tests",13 +"MDL-45919","06/09/2014 15:15:31","Event monitor: Create a subscription manager class","Create a class report_monitor\subscription_manager that lets you # Create subscriptions # Delete subscriptions # Get subscription # Get subscriptions for course # Get subscriptions for an event With unit tests",20 +"MDL-45920","06/09/2014 17:25:30","Define Report Builder API","Work in progress: http://docs.moodle.org/dev/reportbuilder/API We need to define the API that will be used to define report sources. This will determine a large section of the work that needs to be done as we integrate the report builder into core moodle.",20 +"MDL-45935","06/10/2014 09:12:20","Slow behat tests for backup","When we run behat backup tests, we pass a table such as: {code} When I backup ""Course 2"" course using this options: | Filename | test_backup.mbz | | setting_section_section_2_userinfo | 0 | | setting_section_section_2_included | 0 | | setting_section_section_4_userinfo | 0 | | setting_section_section_4_included | 0 | {code} We then call i_backup_course_using_this_options, passing in those options. That in turn handles the backup process looking at each page. At each page, it uses the following to fill in the form: {code} $this->fill_backup_restore_form($options); {code} Which then looks for each option in the table and fills it in. Since most of those settings are only found on one page, we then wait 12 seconds for the search for that option to fail to be found (which we ignore with a try/catch). https://github.com/moodle/moodle/blob/master/backup/util/ui/tests/behat/behat_backup.php#L351 The result is that each test involving backups takes a good minute just to fill in the each page of the backup form, for three pages making about 3 minutes of wasted time in timeouts. By fixing this, we should be able to knock a good few minutes off behat runtimes.",5 +"MDL-45936","06/10/2014 09:41:45","The auth/db plugin should use the core functions user_create_user and user_update_user","The auth/db is doing a bunch of it's own logic to add/update a user, which is not great. We want to keep the logic in one place for easy maintenance/updates etc.",8 +"MDL-45938","06/10/2014 11:17:35","Event monitor: Create a form to edit/add a new rule","We need a form to add/edit a new rule. This issue includes:- # The mform with proper validations and such # Edit.php to handel forum submissions # A yui module to update the select drop downs dynamically (consider creating a mform dependent select element instead? ) ",40 +"MDL-45939","06/10/2014 11:18:51","Event monitor: Create rule class","We need a class that represents a rule in the database. It might have the following methods get_module_select delete_rule copy_rule get_plugin_name get_description get_name get_filters_description get_event_name unsubscribe_user subscribe_user If it seems some of these methods can be reused by the subscription class, consider abstraction of those. ",20 +"MDL-46016","06/17/2014 06:55:23","Shibboleth contains misleading comment regarding user passwords","I was reading through the Shibboleth code and found this in auth/shibboleth/index.php near line 37 {code} /// If we can find the Shibboleth attribute, save it in session and return to main login page if (!empty($_SERVER[$pluginconfig->user_attribute])) { // Shibboleth auto-login $frm = new stdClass(); $frm->username = strtolower($_SERVER[$pluginconfig->user_attribute]); $frm->password = substr(base64_encode($_SERVER[$pluginconfig->user_attribute]),0,8); // The random password consists of the first 8 letters of the base 64 encoded user ID // This password is never used unless the user account is converted to manual {code} The problem is that I don't believe Base64 is random at all and for short usernames could yield extremely short passwords. For instance the first 8 characters of the username 'ted' are 'dGVk'. I am certainly no security expert but if a site for whatever reason decided to stop using Shibboleth anyone could stick a bunch of known usernames through Base64 and easily have the first 8 characters. It seems like a bunch of randomized garbage characters would be a better idea to use. I really hope I am missing something here.",13 +"MDL-46022","06/17/2014 14:50:12","Add ability to create dividers in custom_menu","As MDL-45893 is being developed based on custom_menu code, I think it'd be useful to have the ability to create dividers in regular custom_menus too. It is envisioned that you'd be able to specify dividers like this: {noformat} Moodle community|http://moodle.org -Moodle free support|http://moodle.org/support -#### -Moodle development|http://moodle.org/development --Moodle Tracker|http://tracker.moodle.org --Moodle Docs|http://docs.moodle.org -Moodle News|http://moodle.org/news #### Moodle company -Moodle commercial hosting|http://moodle.com/hosting -Moodle commercial support|http://moodle.com/support {noformat} ...where a menu item with text of '####' and no URL will be given the class 'divider' at render time. I'd use the '-' character, but that'd conflict with our existing use of that to denote nesting level",3 +"MDL-46035","06/18/2014 10:11:24","Survey activity shows wrong error message to admins","If you create a survey activity as an admin that is not enrolled in the course it says ""Guests are not allowed to submit surveys"". Admin != guest.",2 +"MDL-46036","06/18/2014 10:20:38","Exception is thrown if you try to download responses from a survey activity with no responses","I suspect we should be handling there being no data to download in a more graceful way. Create a survey activity, click on 'download results' and pick excel. The following is displayed. {quote} There are no answers for this survey yet. More information about this error Debug info: Error code: cannotfindanswer Stack trace: line 463 of /lib/setuplib.php: moodle_exception thrown line 138 of /mod/survey/download.php: call to print_error() {quote}",5 +"MDL-46059","06/19/2014 11:32:26","Editing LTI page invalid grade view","The LTI edit page loads the grade maximum points as a decimal number and then complains that it is not an integer when you try and save.",8 +"MDL-46109","06/24/2014 13:05:41","Event monitor: Create a class to generate eventlist","Create a class to find and list all events with caching",13 +"MDL-46110","06/24/2014 14:33:11","Event monitor: Create renderables/renderers to display the rule managment page","Write a renderer to display rule management interface.",20 +"MDL-46111","06/24/2014 14:37:31","Event monitor: Create renderables/renderers to display the subscription managment page","Write a renderer to display subscription management interface.",40 +"MDL-46118","06/25/2014 01:28:52","Problems in downloading course log files, only 30 lines are downloaded","Hi, we are using 2.7 an the Problem is, that trying to download log files only 30 rows are included in the download-file (exel, csv, xhtml ...). Talking about course-administration >> Reports >> Logs. Even without filtering anything, so that about 17 Pages of logdata are available online, a click on ""Download table Data as...excel/csv/xhtml..."" only results in 30 lines of logdata. Think this is really a bug!?",5 +"MDL-46129","06/25/2014 16:52:32","Event monitor: Handle creating/deleting subscriptions","Write a renderer to display subscription management interface.",13 +"MDL-46130","06/25/2014 16:53:27","Event monitor: Handle rule managment","Write yui modules to handle the managment of rules # Deleting a rule # copying a rule",8 +"MDL-46131","06/25/2014 17:15:44","Event monitor: Sort out navigation","We basically are going to provide three main entry points # Subscription management page # Rules management page Sort out where these nodes needs to be present in the navigation ",8 +"MDL-46132","06/25/2014 17:24:46","Event monitor: Implement the event observer","Implement an event observer that populates tool_monitor_events, as needed",40 +"MDL-46133","06/25/2014 17:26:36","Event monitor: Implement cron task to clean events table","Implement a cron task to clean tool_monitor_events periodically. There are three ways do this:- # Truncate the table unconditionally every x hours # Implement a smart logic that reads various rules and finds which event entries are not useful any more and dumps them only. # Implement a semi -smart logic which finds out the maximum ""timewindow"" used in rules and dumps every thing beyond that. Imho, 1 is not acceptable, 2 seems ideal, 3 is easiest to implement and more performance friendly than 2.",20 +"MDL-46134","06/25/2014 17:28:08","Event monitor: Implement cron task to send notifications","Implement a cron task to check if rule has happened or not and send notifications as required. This will also include creating a new message type.",13 +"MDL-46139","06/26/2014 00:04:22","Add extra credit, drop-low/ keep-high, accurate weights and contribution column to User report","# calculate up each container’s (category or course items) adjusted weight percentage and grademax associated with the items adjusted (need this for weighting, so could be done here or after the next step) # calculate points (must be first, you cannot calculate weights until you have the finalgrade and grademax for categories). For each gtree->levels starting with highest (items) to lowest (course) for both finalgrade and grademax ## include hidden only if hidetotalsifcontainhiddenitems is set to GRADE_REPORT_SHOW_REAL_TOTAL_IF_CONTAINS_HIDDEN ## ignore ungraded items if aggregateonlygraded is set, does not apply when calculating total points for Setup (Categories and items) screen ## include extra credit items in finalgrade calculations only, not grademax ## ignore items that have been dropped from drop low or keep high ## accumulate all other finalgrades and grademaxes into parent category finalgrade and grademaxes # calculate weights (must be done before calculating contributions). For each gtree->levels starting with highest (items) to lowest (course) ## weight is always percentage grade * weight... in this case PERCENTAGE:[item grademax / (container grademax - adjusted grademax for the container from step 1)] * WEIGHT:[(100 - adjusted weight for the container from step 1)] # Adjust weights in a container to always equal 100 # calculate contributions (needed in order to accurately drop lowest, keep highest. Also needed to provide the most percentages). For each gtree->levels starting with highest (items) to lowest (course) ## contribution is always the item’s percentage * the item’s weight * the container’s weight… so (finalgrade / grademax) * item weight * container weight # limit categories - drop lowest, keep highest (need to have contributions in order to accurately drop low and keep high) ## remove contribs ## remove finalgrades from parent finalgrade ## remove maxgrade from parent maxgrade",40 +"MDL-46175","06/27/2014 23:37:56","Gradebook terminology improvements","As defined by the Gradebook working group: ""en"" pack: # ""Aggregate Only Non-Empty Grades"" → ""Exclude empty grades"" # ""Categories & Items"" → ""Setup"" # ""Marks/Marking"" → ""Grades/Grading"" (whenever referring to gradebook stuff) ""en_us"" pack: # ""Marks → Points"" (for quiz) Swap string: # ""Update"" on grader report → ""Save changes"" New terms: # ""Natural weighting""",8 +"MDL-46191","06/29/2014 02:40:36","Develop new Gradebook history report","# take the netspot grade history module and integrate # extend the netspot module, and provide functionality to find editing periods, and then provide a diff report from a specific period in time with current.",100 +"MDL-46206","06/30/2014 23:13:22","Alt image in footer is incorrectly repeated","According to [this example|http://www.w3.org/TR/WCAG20-TECHS/H2#H2-failex5], alt attribute of footer's image should be empty instead of be repeated twice (on image's alt attribute and p tag text). But maybe this image should be displayed via css ? *Replication steps:* # Log in to a course # Inspect the HTML on the icon in the docs link at the bottom of the page",5 +"MDL-46218","07/01/2014 19:10:07","Disabled functionality checks occur later than necessary","While scouting around I noticed that /notes/edit.php and /notes/delete.php both include this check... {code} if (empty($CFG->enablenotes)) { print_error('notesdisabled', 'notes'); } {code} but it occurs quite a way down the file after the $PAGE is set up, the user is loaded, the course is loaded and capability checks are performed. The check could be done much earlier to save us some cycles. There are likely to be other places where this is also true so have a look around.",5 +"MDL-46241","07/03/2014 16:27:36","Event monitor: Create a subscription instance class","Create a class that represents a subscription instance",5 +"MDL-46248","07/04/2014 09:10:55","Backport of MDL-42869: HTML validation check fails on calendar add event screen","Backporting this issue would allow us to apply the fix for MDL-46197 to 2.6.",3 +"MDL-46253","07/04/2014 19:15:12","Add-on validation message always shows ""foundlangfile"" (Debug)","Debug message can be confusing to most users. When installing a plugin/module through Moodle interface , Add-on Package validation page display Message ""foundlangfile"" with status 'Debug'. It looks like as if something is wrong. File : /admin/tool/installaddon/classes/validator.php Line : 397 Incorrect : $this->add_message(self::DEBUG, 'foundlangfile', $this->langfilename); Correct : $this->add_message(self::OK, 'foundlangfile', $this->langfilename); I am not sure if setting it to DEBUG is done for a reason.",3 +"MDL-46255","07/04/2014 22:49:07","Purge all caches page did not call $PAGE->set_url(...) (Moodle 2.8)","This page did not call $PAGE->set_url(...). Using http://localhost/moodle28/admin/purgecaches.php?confirm=1&sesskey=ZjULBqAVg1 line 560 of \lib\pagelib.php: call to debugging() line 768 of \lib\pagelib.php: call to moodle_page->magic_get_url() line 3419 of \lib\navigationlib.php: call to moodle_page->__get() line 719 of \lib\pagelib.php: call to settings_navigation->initialise() line 768 of \lib\pagelib.php: call to moodle_page->magic_get_settingsnav() line 3086 of \lib\navigationlib.php: call to moodle_page->__get() line 824 of \lib\pagelib.php: call to navbar->has_items() line 26 of \theme\tiny\layout\default.php: call to moodle_page->has_navbar() line 908 of \lib\outputrenderers.php: call to include() line 838 of \lib\outputrenderers.php: call to core_renderer->render_page_layout() line 285 of \theme\tiny\renderers.php: call to core_renderer->header() line ? of unknownfile: call to theme_tiny_core_renderer->redirect_message() line 1639 of \lib\setuplib.php: call to call_user_func_array() line 2592 of \lib\weblib.php: call to bootstrap_renderer->__call() line 2592 of \lib\weblib.php: call to bootstrap_renderer->redirect_message() line 44 of \admin\purgecaches.php: call to redirect()",5 +"MDL-46267","07/07/2014 16:05:51","Final deprecation of https_required and verify_https_required, remove loginhttps and httpswwwroot if possible","Remove functions https_required and verify_required from lib/pagelib.php Probably can't remove httpswwwroot as it has no way to be deprecated before removal Remove loginhttps from all places in core (e.g. lib/setup.php)",1 +"MDL-46269","07/07/2014 17:21:47","Convert http embedded content to https on https sites where available","This could be a once off thing (e.g. when someone changes from http to https and back) or a constant thing (whenever they add a link) Note that apache server can be configured to choose http or https automatically, and other servers may have similar functionality. The protocol relative url option can be considered as well. ""//www.example.com"" will link to https://www.example.com if you are on https://moodle.org or http://www.example.com if you are on http://moodle.org Finally, a filter could be made. Filter attempt: https://github.com/xow/moodle/compare/27466d7548de99cbb050027acc3e809ce49ad2e9...MDL-46269-master-filter",100 +"MDL-46285","07/08/2014 16:03:06","Option to hide user_picture from screen readers","There is at present no way to emit a user_picture that isn't visible to screen readers. It is envisaged that this could be achieved by adding a flag to the renderable, {{visibletoscreenreaders}}, defaulting to true; when set to false, the renderable should be rendered with appropriate attributes. Default behaviour is backwards compatible; all current user_pictures are visible to screen readers, so the {{visibletoscreenreaders}} flag defaults to *true* to emulate this. Setting the flag to *false* adds attributes to both the {{img}} and {{a}} tags to hide them from screen readers.",3 +"MDL-46313","07/10/2014 12:57:45","Create new icons for e-mail subscription status","The current icons for e-mail subscription state are too subtle. Go work your creative magic and bring us something beautiful and inspiring, but where you can see at a glance the differences in your subscription state.",8 +"MDL-46316","07/10/2014 16:25:09","Fix coding style problems in notes","code checker currently reports 50 errors and 103 warnings just in notes.",5 +"MDL-46317","07/10/2014 18:11:17","Private files space setting should use MB not Bytes","Currently, User Quota in Site Policies is defined in number of Bytes. And by default, 104857600 bytes. (100MB). The average user would understand this better if it were set as Megabytes. Plus it makes it a bit more less scary to change... Bytes isn't used anywhere else (as far as I can see) either.",0 +"MDL-46346","07/13/2014 18:18:35","coding style problems in blog","Originally noted in MDL-46218. There are lots of coding style issues in blog.",5 +"MDL-46455","07/21/2014 11:53:34","Re-introduce backup/restore functionality with new logging system","Currently the new logging stores do not support backup/restore. This is critical information, especially if we plan on using it more and more, so the functionality should exist. We are removing the usage of the legacy logs, and only have the legacy log store for BC, so new sites won't be backing up/restoring any logging information.",100 +"MDL-46496","07/24/2014 05:32:52","jquery ui css issue","In using Moodle 2.6's jquery ui css that comes with standard Moodle, I found a bug with the urls included in the css. The normal jquery-ui.css file contains the correct paths, but the minified version does not. It contains extra path information on all of the image urls: ../../../../../../../../Downloads/jquery-ui-1.10.3/themes/base/minified/ These should just be removed to be left with the relative path to the images folder. This problem doesn't exist in the master branch with the upgrade to jquery ui 1.10.4",3 +"MDL-46510","07/24/2014 17:56:50","Event monitor: Delete rules when course is deleted","We need an observer to delete rules and subscriptions when a course is deleted",8 +"MDL-46523","07/25/2014 11:51:25","Add body class when logged in as other role","To support work being done on MDL-45893, we need a way of telling at the DOM level when a user is viewing as another role. We already have a class added to the body telling us when we're logged in as another user; this should be fairly straightforward.",3 +"MDL-46546","07/28/2014 15:54:51","CSV import of grades silently fails when malformed row(s) present","If the number of columns in any data row don’t match the columns in the header row, there is no diagnostic warning, AND the ability to map from the select box in the “identify user by"" section is broken.",13 +"MDL-46547","07/28/2014 17:23:12","Copy and paste import from excel into the gradebook.","It would be convenient to just copy and paste rows from excel straight into the gradebook. This could be added to the csv import form.",100 +"MDL-46548","07/28/2014 17:33:43","Improved interface for export of grades","Add the ability to dump grade data to CSV *without* selecting parameters, optionally linked to the grader report. The solution should: * contain a row of weights and a row of maximum points * contain a blank row after each category for teacher calculations * have support for letter grades as well (see MDL-44447)",20 +"MDL-46567","07/29/2014 12:06:30","Clone and integrate NetSpot's gradehistory report","- Pull the module in, keep git history - Remove README file - Add the missing copyrights and file headers - Complete the PHP docs - Fix the coding style - Make sure all terms comply with MDL-46175 https://github.com/netspotau/moodle-gradereport_history",8 +"MDL-46568","07/29/2014 12:07:34","Clean up the history report","- Removing unnecessary or unused methods - Removing the language strings static cache - Check the module for security issues (privacy, unauthorised access, ...)",8 +"MDL-46569","07/29/2014 12:08:54","Migrate the history report to use table_sql","- Migrate the table to a table_sql -- Enable and check the column sorting -- Enable and check the collapsible columns - Implement autoloading of the different classes - Use the download feature, rather than the export button - Reconsider the columns (which ones to display, what order to use) - Make the name of the grader, graded users and grade item clickable -- Grader and graded go to their profile -- Grade item could go somewhere, maybe... - Do not capitalise the source column values - Page navigation should not be displayed above the filter form",40 +"MDL-46570","07/29/2014 12:10:33","Convert gradebook javascript to a YUI module","- Convert the YUI code into a shifter compatible module - Move ajax.php logic into a class, or another location ",40 +"MDL-46571","07/29/2014 12:11:59","Write Unit Tests for the history report","Write Unit Tests to ensure that the queries are returning the expected result.",20 +"MDL-46572","07/29/2014 12:13:35","Write a simple behat test for the history report","Write a simple behat test for the history report. {quote} As a teacher, I can see the grade history of a grade I just gave to a student {quote} ",13 +"MDL-46573","07/29/2014 12:15:16","Improve the SQL queries of the history report","- Fix the query not to be based on ID, but timestamps -- With unit tests confirming - Ensure that the queries include alternate name fields - Ensure the queries are cross DB",13 +"MDL-46574","07/29/2014 12:17:29","Add the event grade_report_viewed for the history report","Create and use a new event \gradereport_history\event\grade_report_viewed.",13 +"MDL-46576","07/29/2014 12:58:04","Implement Natural aggregation","* Include upgrade code to add new database columns * May involve fixing some existing unit and behat tests. * -Must have no errors or warnings in code checker-",100 +"MDL-46578","07/29/2014 13:09:04","Make Natural aggregation the (single) default aggregation method","Currently there are a number of aggregation methods. The new ""Natural"" aggregation method can cover most of the functionality of all existing aggregation methods. On new installs, this should be set as the default aggregation method. It is also possible to hide the other aggregation methods by setting it as the single selected aggregation method at the site level. Settings for both are defined at Site admin > Grades > Grade category settings. If there is only one aggregation method available, then aggregation controls should be hidden in the gradebook setup pages and wherever aggregations are named.",8 +"MDL-46595","07/30/2014 09:49:23","Add behat tests","Base these on the [""Calculation examples"" section in the spec|http://docs.moodle.org/dev/Natural_weighting#Calculation_examples]. These should be written very early to prove the state of the code. Also the items under [""Logic changes"" should be covered|http://docs.moodle.org/dev/Natural_weighting#Logic_changes]. In particular ""Sum of Grades aggregation must be fixed to exclude hidden items and to exclude non-graded items"" and ""Determination of range (in Grader and User report) and Max grade (in Setup screen) must be fixed to exclude extra credit items"". Write new behat tests for the new UI.",40 +"MDL-46597","07/30/2014 11:09:41","Locked grade items don't update on grade import","If a score for a student for a gradeitem that is being updated via import is locked, the entire set of scores being imported do not update, yet there is no message to that effect. The only current message is a notification of “Grade is locked”. Problem - If a score for a student for a gradeitem that is being updated via import is locked, the entire set of scores being imported do not update, yet there is no message to that effect. The only current message is a notification of “Grade is locked”. Level - Major Fix Proposed - 1 line of code modified with better error message (or a 2nd line with additional message) Solutions Proposed (S1) - print different error message (please note, the text would go into a string) Extended solution (S2)- print at least the line that had the mismatch, possibly process entire file and list all. To reproduce: # turn editing on, in the grader report, for a manual grade item, # lock a single students score. turn editing off. # Now import data into the gradebook # for that grade item, ensure you have that one student in your list You will see that *NO* grades are updated. ",13 +"MDL-46599","07/30/2014 11:12:15","Importing null grade data clears existing grades","If an instructor has a data file, that has null scores for students, and the instructor imports that file, any existing scores will be cleared with those null scores. *Example real-world scenario*: when there are large classes, with multiple graders, who only grade a subset of the students. Each grader may only enter scores for their students, and have nulls for all the others.",40 +"MDL-46600","07/30/2014 11:13:06","Import fails if grade import data contains nonexistent user","When matching all the data records in the file, mapping the user, if there is even one record which can’t be matched in Moodle, the entire import fails. There is adequate diagnostic, displaying the first user it couldn’t find, but doesn’t tell the instructor no data was imported.",13 +"MDL-46602","07/30/2014 15:30:33","Write specification for improvements to scales. ","We need to get some agreement on the solution for MDL-17258 - so we need to properly specify the proposed solution. Spec: http://docs.moodle.org/dev/Scales_Improvements_Specifications",20 +"MDL-46646","08/01/2014 11:43:41","Optimise grader report","Whilst playing with some larger datasets on MDL-25544, I noticed that things were a lot slower than I would expect, so I did some profiling. The profiling pulled up some easy-to-address things which can knock off a sub off the page load. These are things like: * unnecessary use of html_writer in a loop; * repeat calls to fetch gradebook user preferences without caching * repeated calls to get_string for the same static string",8 +"MDL-46649","08/01/2014 17:13:25","The user selector search does not respect the parameters passed","When using the user selector and loading users (while searching, or clicking ""Next 25""), the query ignores the values: - Users per page - Page number Therefore returning more users than expected, and returning the same than the ones already present when fetching more of them. This is blocked by MDL-46569, due to the transition to table_sql, because the callbacks/structure/... are changing.",8 +"MDL-46662","08/04/2014 11:09:44","Accessibility improvements for gradereport course header and aggregation controls.","Provide accessibility improvements on the gradereport for screen readers. Specifically label-hides for the course header to indicate what is currently being displayed by the gradereport and altering the alt-text for the aggregation icon to better indicate it's functionality.",20 +"MDL-46663","08/04/2014 11:48:26","Remove old functionality","Note, these changes relate purely to features which have been replaced or superseded by new functionality, and new ways of doing things in Moodle. * r0/r1 CSS classes should be removed - deprecation policy should not apply as the interface is largely a rewrite * fixed columns system - this new method replaces them * scrollview JS - this new method replaces this code ",20 +"MDL-46678","08/05/2014 15:17:25","Move sql in index.php to an api","Index.php has the following hardcoded sql {code} $sql = ""SELECT u.id, "".$DB->sql_concat('u.lastname', ""' '"", 'u.firstname')."" FROM {user} u JOIN {grade_grades_history} ggh ON ggh.usermodified = u.id JOIN {grade_items} gi ON gi.id = ggh.itemid WHERE gi.courseid = :courseid GROUP BY u.id ORDER BY u.lastname ASC, u.firstname ASC""; {code} It needs to be moved to an api.",5 +"MDL-46695","08/06/2014 13:12:03","Get prototype onto prototype.moodle.net, promote and request feedback","Once the UMN prototype has been checked and possibly modified to meet Moodle coding standards, the prototype should be shared publicly, with an opportunity for feedback.",8 +"MDL-46696","08/06/2014 14:31:32","Implement backup and restore of the grades history","The backup interface provides an option to include the grade history, but this checkbox does not do anything. Now that we are providing a user interface to view the grade history (MDL-46191), we should support backup and restore of those data.",40 +"MDL-46748","08/09/2014 01:32:22","Mathjax default SSL CDN address is down causing atto to fail to load","I just noticed on Moodle.org that atto wouldn't load on an forum post page. It was failing to load https://c328740.ssl.cf1.rackcdn.com/mathjax/2.3-latest/MathJax.js Looks like that CDN url has gone. On the plus side it looks like they've got https on their normal cdn address now so I configured moodle.org to use https://cdn.mathjax.org/mathjax/2.3-latest/MathJax.js instead. But this caused atto to completely fail to load (and the repository) - so the failure is quite dramatic h3.Steps to reproduce # Disable tex filter, enable mathjax filter # Set mathjax url to https://c328740.ssl.cf1.rackcdn.com/mathjax/2.3-latest/MathJax.js (or if that url starts working again, another broken url) # Try and add a forum post h3.Expected results * The atto editor loads and repository uploader loads * Mathjax is not available h3.Actual results * The editor doesn't load * The repo picker doesn't load",5 +"MDL-46772","08/12/2014 09:39:47","html_writer::table Ignore attributes for rows","Although html_table_row can take attributes, they're completely ignored by html_writer's table() function. Amongst other things, this prevents the addition of data attributes to a whole row.",5 +"MDL-46774","08/12/2014 10:48:26","Migrate row/column highlight code to YUI module","Reduce code duplication, improve performance reduce number of event handlers.",5 +"MDL-46777","08/12/2014 12:29:17","Improve behaviour of grader header, footer and sidebar on iOS 8 + IE","This issue relates to jankiness of the grader report on IE and iOS 8 Beta 4 (Safari). In iOS versions < 8, the scroll event is only fired at the end of the action, and not throughout so this is not an issue. From iOS 8 (tested with beta 4 on Safari), the scroll event is fired throughout. However, it is not fired frequently enough, resulting in a stuttering feeling. IE just sucks at tables and with a large table in the DOM, it stutters without any javascript at all. Adding the floating headers makes this more apparent for the same reason that iOS 8 appears to stutter - the scroll event is not called frequently enough, and it looks like it's stuttering as a result. We've tried several fixes for this already, and at present the code is highly optimised so that the fewest number of calculations occurs. The code also batches UI changes to reduce layout thrashing. In one sense, it would be nice to use a position of fixed, but this has it's own issues too: * iOS has a long-standing known issue where fixed items gradually disappear off the screen. As far as I can tell, there is no known fix for the iOS fixed issue, so to keep it from disappearing off screen, we would have to maintain the current solution of relative positioned elements. Maintaining two methods for this is not an ideal situation - especially just for a single ecosystem.",5 +"MDL-46797","08/13/2014 14:50:18","Rename ""Sum of grades"" aggregation to ""Natural""","It was considered acceptable that the Natural Weighting aggregation method would replace the Sum of grades aggregation, rather than being an additional, new aggregation method. The upgrade path to achieve this replacement is clear. A number of name suggestions were the new aggregation method, including: * Natural weighted, * Default, * Simple, * Easy, * Standard and * Natural. It was accepted by consensus that ""Natural"" concisely represented the meaning of the aggregation method and would also be consistent if it was adopted as the new default method, potentially the only default method selectable on new sites.",5 +"MDL-46801","08/13/2014 16:58:04","Nest weightings within categories","At the moment, on the Gradebook setup pages (Simple and Full), where weights are used, the weights are all lined up in one column. It is difficult to determine what weights belong to grade items, categories and nested grade items. The weights should be nested to indicate they are within a category.",13 +"MDL-46818","08/14/2014 12:46:17","Add form change checking to Gradebook setup page","Currently, if you change a weight or some other setting on the Gradebook setup page(s) and then move away from the page without clicking ""Save changes"", the changes you have made will be lost without warning. Change checking should be added to warn users of potentially losing changes before leaving the page.",8 +"MDL-46819","08/14/2014 12:57:09","Negative adjusted weights in the natural aggregation should not be allowed.","Entering negative weights when using the natural aggregation method should not be allowed.",13 +"MDL-46821","08/14/2014 13:09:36","Category colours not matching in Gradebook User report","When viewing the User report, categories are nested within a table. Each nested category has a header and footer for its section within the table. Currently, colours are used to visually identify and link those headers and footers, but at the moment, the colours are not matching or are not extended between the header and footer correctly.",13 +"MDL-46822","08/14/2014 15:37:20","Allow editing of weights within single category","Currently, to allow editing of weights, the cog icon at the top of the weights column needs to be clicked. The user can then edit weights all categories/items. It would be useful to be able to turn on such editing within a category. The icon for editing might need to be replaced with another icon or text to avoid confusing with the Edit icon to the right.",20 +"MDL-46824","08/14/2014 15:58:08","Only allow drop lowest/keep highest when items in category are equally weighted","The rule to allow the functionality to drop N lowest or keep N highest grades in a category needs to be enforced in the category settings and there needs to be help that explains when and how these options can be used. See https://tracker.moodle.org/browse/MDL-46576 for the code to branch from, unless that issue has already been integrated. See the spec at https://docs.moodle.org/dev/Natural_weighting See https://github.com/MoodleGradebookWorkingGroup/moodle/compare/master...28_natural_weights for the original prototype implementation. Weights need to take into account that some grade items will be dropped. This needs to reflected in the UI somehow. For example, maybe the weight would be ""25% or dropped"" ",40 +"MDL-46827","08/14/2014 16:08:30","Allow weightings within a category to be reset","When a user manually sets a weight it becomes fixed and only other weights are changed when normalising the weights in a category. It would be good to have an option to reset the weights within a category. This would remove the flag indicating individual weights have been manually edited so they can all be normalised. This could be extended to reset the weights for the whole course.",20 +"MDL-46846","08/15/2014 13:32:40","Grade export does not support grade display type anymore","The format of grade is now ignored.",2 +"MDL-46862","08/18/2014 11:46:40","Create a mockup/prototype of the simplified, combined Gradebook Setup page","Before we can estimate the complexity of shifting and combining elements in the Gradebook Setup page, a quick prototype should be created to inform scaling.",20 +"MDL-46864","08/18/2014 14:35:39","Integrate Natural weighting code","This issue is to review the code ready for modification within Moodle. This will establish a working branch for collaboration in relation to this issues siblings.",40 +"MDL-46873","08/19/2014 12:44:15","Publish prototype and publicise","Publish prototype and publicise",8 +"MDL-46902","08/20/2014 13:07:13","When searching for a course that does not exist a non-sensical string is displayed.","# Search for a course from the course management page that does not exist, eg. ""NOWAYTHISCOURSEEXISTSIFITDOESWOWYOUCRAZY"". # You will get the strange string ""Showing courses -19 to 0 of 0 courses"" due to Moodle performing arithmetic with the value of 0 (($page * $perpage) + 1).",5 +"MDL-46907","08/20/2014 16:48:35","Refactor user_button class to remove js methods","As per the review on the parent epic the user_button class needs to be refactored as well - {quote} This user_button class is terrible. It just exposes methods to allow calling the js init functions it requires - but those functions are called from outside the class - ie the caller has to know all the functions and params that are required for the JS. Further - it builds up arrays of init functions and modules of which there is only one, and then calls them, in an inefficient way which prevents comboloading. {quote}",20 +"MDL-46920","08/21/2014 11:42:01","Data-target does nothing","Currently on themes based off bootstrap base have a button that expands the header and displays the users logged in status. This button has a data-target property which is meant to specify (or so I would think) what DOM elements are to be hidden or displayed at narrow screen resolutions",3 +"MDL-46921","08/21/2014 11:59:10","Allow sorting on additional name fields.","The sorting of tables can only be done on the users first name and surname. There should be a way to sort on the additional name fields (firstnamephonetic, lastnamephonetic, middlename, alternatename).",20 +"MDL-46923","08/21/2014 14:03:16","Typo in behat function name","The functions 'following_should_exit_in_the_table' and 'following_should_not_exit_in_the_table' have typos.",3 +"MDL-46936","08/22/2014 12:54:43","Restore AJAX editing","After the import of UCLA code, the AJAX editing has broken. In addition *Todo* * -AJAX doesn't load at all. Missing id column so incorrect variables are supplied as arguments to module.js- * -Click to edit fields- * -Clicking on another element of the page should save- * -On blur (deselect) the change should save- * -Hitting escape should cancel - non edit mode- * -Arrow keys - Ctrl+Arrow Key fine on everything except Safari (and then it's just control+command+key)- * -Headings become misaligned when you edit an entry.- * -Analysis icon being forced to second line when editing cell- *Not handling* * ""Cannot read property 'setStyle' of null"" error message - cannot reproduce * 'Error click this box to remove it' - error box is just text and not a box Occurs when invalid text is submitted to a cell * Javascript error - undefined is not a function (this._hideSpinner()) - will be handled in MDL-25544 * Totals at the bottom aren't updated when you edit a cell. - will be handled in MDL-46658 * Row not highlighted when you click in the name field - will be handled in MDL-46658, unrelated to AJAX editing * TAB'ing behaviour only works as desired on FF. (and even then it's not great, at the end of the column it tabs out) In IE, Safari and Chrome it tabs to elements outside of the table. ",20 +"MDL-46950","08/25/2014 12:37:44","Re-organised CSS of the grader report","- The original CSS needs to be used in conjunction with the styles.css in the most recent commit, removing the excess from the original, etc. - Move all colours to bootstrapbase + base themes -- Consider using LESS variables when relevant -- Test the result on More - The usage of table-striped needs to be considered We should also consider the style in general, as the colours are a bit off compared to the current themes. This could be deferred to another issue.",13 +"MDL-46951","08/25/2014 12:38:46","Make the grader report work on theme_base and derivatives","* Offsets are whacky - could be related to negative margins * Tooltips are not working ",20 +"MDL-46962","08/26/2014 11:10:24","Handle floating objects with RTL languages","RTL does not work so far, we have to invert the computations as everything aligned on the right should be aligned on the left, etc...",8 +"MDL-46966","08/26/2014 13:19:22","change the default value of grade_aggregations_visible","Changing the default value of grade_aggregations_visible to only include Natural is enough. The default for grade_aggregations_visible should be changed to only be sum of grades. If FORCE_SUM_OF_GRADES is in the code, it can be removed.",5 +"MDL-46967","08/26/2014 13:20:21","Remove grade/lib.php update_field()","Replace it by using Moodle's existing database methods or at least something that cannot be used to update anything in the database. Perhaps something like update_weight() in grade_items and another one for grade_grade instances.",5 +"MDL-46980","08/26/2014 16:52:50","Move install code into core","Right now the install code is in local/gradebookcoredb. It needs to be moved into core. Also upgrade code needs to be written. Then the local plugin can be removed.",8 +"MDL-46988","08/27/2014 17:52:29","Fix RTL styling of the new grader report","The CSS styles are not always very well set up for RTL languages. For instance the margin between the user picture and the full name. Or some text alignment, etc...",5 +"MDL-46997","08/28/2014 01:26:53","Sum of Grades still not calculating correctly with hidden items","In the following example on a vanilla instance of core 2.6.4+ with ""exclude hidden items from totals"" set on the course, I created two categories (aggregation set to Sum of Grades), each with two 100-point items, and gave the student 100 points for each item (400 total points). I then hid item 4 which should change the totals to 300/300. Gradebook Testing Category 1 Item 1 100.00 0–100 100.00 % Item 2 100.00 0–100 100.00 % Category total 200.00 0–200 100.00 % Category 2 Item 3 100.00 0–100 100.00 % Item 4 (hid) - 0–100 - Category total 100.00 0–100 200.00 % Course total 200.00 0–200 200.00 % As you can see from the results, the hidden item results in the course total of 200 points (and 200%), and Category 2 has the wrong percentage. ",8 +"MDL-47006","08/28/2014 09:43:06","Add weights to sum of grades / natural","Add weights from weighted mean of grades. Leave as numbers for now, will change to percentages later + Fix the display of the weight fields with natural aggregation to always display percentage (main screen, edit screen of grade item, edit screen of grade category, maybe outcome too) (was MDL-47125) + When using aggregation method 'Simple weighted mean', the extra credit field is a input field, which name is aggregationcoef2. (was MDL-47112)",40 +"MDL-47009","08/28/2014 12:29:38","Update reports so that they display natural weights properly","The 'user' report and the 'grader' report will need to be able to display grades with the weighting applied. Check out Damyon's patch for MDL-46139 for areas that need to be changed to implement this.",20 +"MDL-47011","08/28/2014 15:14:46","Apply natural weights to all grade items when setting up the gradebook.","All assessments and categories should have a natural weight applied by default. e.g. assignment one 75 points - weight = 75% assignment two 25 points - weight = 25% Total weight = 100% If one of the weights is manually altered, then the other assignments should be automatically updated to equal 100% e.g. assignment one 75 point - weight manually changed to 80% assignment two 25 point - weight automatically updated to 20% Total weight = 100% We thought that perhaps an additional field could be added to the grade_item table of weightoverride like the demo code has, to determine if a weight was manually changed or not.",20 +"MDL-47025","08/29/2014 14:44:04","Fix highlighting behaviour in the new grader report","It does not appear to work any more, probably due to recent changes.",5 +"MDL-47026","08/29/2014 15:45:39","The tooltip prevents the user from entering the feedback field","When editing is turned on, the tooltip appears over the field ""quick feedback"" which prevents the user from entering text in it.",5 +"MDL-47027","08/29/2014 15:47:05","Styling for the grader report when editing is turned on","Due to the changes in MDL-46950, a couple of styles are missing and the editing interface does not look very sexy any more.",8 +"MDL-47035","08/30/2014 03:02:31","Screen reader focus not trapped within file picker modal using Internet Explorer.","When using Internet Explorer,screen reader focus is not confined to the file picker modal. This is not the case in Firefox, where the screen reader focus does remain in the file picker modal regardless of any keyboard shortcuts the screen reader user presses. This behavior was found in Internet Explorer using both JAWS 15 and NVDA 2014. A video demonstrating this issue with JAWS can be found here: http://youtu.be/GIpOlm0zgzA This behavior is the same with other Moodle modals as well, including the ""Add Activity or Source"" modal and the Quiz start/finish modals. This issue is also detailed in MDL-30899 and is also listed under the epic ticket MDL-39663. Steps for Testing: 1. Enable either JAWS or NVDA 2. Using Internet Explorer, Click the Add Activity or Source link 3. With the Add Activity or Source modal open, press the H key. 4. Notice how JAWS/NVDA has moved to a heading outside the modal. ",1 +"MDL-47044","09/01/2014 13:58:49","Putting a natural weight category within a weighted mean category or course results in two weight columns","Create two categories. put one within the other. set one to natural, the other to weighted mean. go to the gradebook simple setup screen. you now have two weight columns.",0 +"MDL-47045","09/01/2014 15:06:23","Bring in code from UCLA","Just a stub task to bring the code from UCLA into the working branch.",20 +"MDL-47046","09/01/2014 15:07:00","Update code from UCLA to meet coding style guidelines","Another stub issue to get issues against the actual work body.",40 +"MDL-47053","09/02/2014 11:11:24","Add floating title for the footer","When scrolling right, the title for the footer needs to float hard too.",8 +"MDL-47055","09/02/2014 12:43:14","reimplement extra credit handling with natural weights.","See https://tracker.moodle.org/browse/MDL-46576 for the code to branch from, unless that issue has already been integrated. See the spec at https://docs.moodle.org/dev/Natural_weighting See https://github.com/MoodleGradebookWorkingGroup/moodle/compare/master...28_natural_weights for the original prototype implementation.",8 +"MDL-47056","09/02/2014 12:45:14","Grader report displays ""error"" for single item in new course","If you create a new course, enrol a student, create one assignment then go to the grader report it reports ""Error"" as the student's grade. Changing a setting like weight or aggregation method may resolve it.",20 +"MDL-47059","09/02/2014 13:17:41","Investigate/fix handling of hidden and excluded grades within natural weights","Simple description of this issue: Make natural weighting compatible with excluded grades (either excluded by exclude empty grades, or manually excluded grades). What needs to happen for this to work: The ""automatic"" weights for each grade_item natural weighting will need to be adjusted ""per user"" depending on the grades that are excluded. The max grade for the category will need to be different ""per user"" depending on the grades that are excluded. Very simple example: ||Grade item||Max grade||Natural Weight|| | Assign 1 | 10 | 10 % | | Assign 2 | 20 | 20 % | | Assign 3 | 30 | 30 % | | Assign 4 | 40 | 40 % | Total = 100 If item 2 is excluded because the student has not submitted anything and ""exclude empty grades"" is enabled - ||Grade item||Max grade||Natural Weight|| | Assign 1 | 10 | 12.5 % | | Assign 3 | 30 | 37.5 % | | Assign 4 | 40 | 50 % | Total = 80 Further more - currently we recalculate the ""view"" if show totals excluding hidden items is enabled. Depending on the performance of recalculating all of the above at page load time - we may need to add additional columns to store the ""view"" for users without view hidden grades capability. (This would be 3 extra columns on grade_grade) Older - more complicated description: At the moment, excluded and empty grades not being calculated in the final grade, is not enabled with sum of grades (the basis of natural weights). Also currently we have not introduced code to handle displaying hidden grades in the reports. To do: # Update reports to not consider empty grades. This work will be partially solved by MDL-47078. # Update reports to exclude hidden grade items. Please note that hidden grade items are items hidden to all students and doesn't cover conditional access to activities. Examples : (Please note that this is the desired outcome) *Exclude empty grades* Student 1 ||Grade item||Grade||Percent|| | Assign 1 | 10 / 20 | 50 % | | Assign 2 | 10 / 40 | 5 % | | Assign 3 | - / 80 | - | | Total | 20 / 60 | 33.33 % | Student 2 ||Grade item||Grade||Percent|| | Assign 1 | - / 20 | - | | Assign 2 | - / 40 | - | | Assign 3 | 20 / 80 | 25% | | Total | 20 / 80 | 25.00 % | Student 1 20 (33.00%) Student 2 20 (25.00 %) *Exclude hidden grade items* Student 1 ||Grade item||Grade||Percent|| | Assign 1 | 10 / 20 | 50 % | | Assign 2 - hidden | - / 40 | - | | Assign 3 | 40 / 80 | 50% | | Total | 50 / 100 | 50.00 % | Student 2 ||Grade item||Grade||Percent|| | Assign 1 | 15 / 20 | 75% | | Assign 2 - hidden | - / 40 | - | | Assign 3 | 20 / 80 | 25% | | Total | 35 / 100 | 35.00 % | Student 1 20 (50.00%) Student 2 20 (35.00 %) *Additional technical information:* https://tracker.moodle.org/browse/MDL-46139 introduced a field, grade_grade::aggregationweight that may be helpful. Currently, grade_category::auto_update_weights() adjust grade_item weights but does this trickle down to grade_grades? If an individual student cannot see an activity is zeroing grade_grade::aggregationweight and recalculating the weights in that category for that student sufficient? This code may want to living in get_hiding_affected() in grade_grade.php.",20 +"MDL-47062","09/02/2014 14:52:42","Create an update script for natural grading","We need an upgrade script to calculate natural weights on grade items when changing from 'sum of grades' to 'natural'. Currently all weights are set to 0.0 when upgrading to this code.",8 +"MDL-47063","09/02/2014 15:06:18","Classes .overridden and .ajaxoverridden are not changing the styles","The styles for .ajaxoverridden were lost in another issue, they should be restored. Though they will suffer from the same problem than the one happening for .overridden: some other rules (with nth-child()) takes precedence over it and so the background color is not updated. We should make overridden more important.",5 +"MDL-47064","09/02/2014 16:36:46","Add contribution column to the user report","In the user report (grade/report/user/index.php) the contribution column should display what percentage each grade item adds to the course/category total percentage Base off branch in https://tracker.moodle.org/browse/MDL-46576 ",40 +"MDL-47098","09/04/2014 10:57:16","If you adjust the weight of a category itself you cannot un-override it","Put a category within a natural weight category and adjust its weight. For a regular grade item if you click the cog/settings icon the resulting page has weight and weight adjusted settings that allow the user to un-override the weight adjustment. These do not exist on the category page.",8 +"MDL-47110","09/04/2014 17:29:29","Automatically normalise weights, and notify users","Currently the weights in the Natural weighting aggregation method are not normalised to percentages. If a user provides weights in a category that do not sum to 100, they need to be automatically proportionally adjusted. It would be helpful to add a notification, possibly within the category that has been updated, that informs the user that their figures have been normalised to become percentages.",20 +"MDL-47124","09/05/2014 10:37:01","Update table row/column sizes when AJAX quick editing","Update table row/column sizes when AJAX quick editing Needs to use either a global namespace, or a global event.",5 +"MDL-47125","09/05/2014 10:45:26","Inconsistent editing of weight of grade items","The weight can be either entered as percentage, or as decimals. - When using the setup page, the weights are displayed in percentage. - When using the _edit_ icon, the weights are displayed in decimals. This should be standardised.",0 +"MDL-47127","09/05/2014 15:03:36","Update ""date till"" string in the grade history report","As discussed in the meeting ""date till"" should be updated to ""date to""",2 +"MDL-47146","09/08/2014 10:41:57","Implement the prototyped changes","See MDL-46862. The changes in the prototype were made by commenting out code and similar. They changes can serve as a guide for the final version but do not meet acceptable coding standards.",20 +"MDL-47147","09/08/2014 10:51:39","Review third party libraries for new versions (2.8)","There are a number of third-party libraries distributed with Moodle. Before the major release, the available versions of these libraries should be reviewed. # Check the list at https://docs.moodle.org/dev/Moodle_libraries_credits, which should be up to date with lib/thirdpartylibs.xml and other thirdpartylibs.xml files distributed around Moodle. # Add any newly incorporated libraries into the list # Check the available versions of each library #* If there is a significant new version and updating is recommended, the new version should be integrated by creating a sub-task to this issue and processing it through integration independently. If there is a readme_moodle.txt file with the plugin, this describes the customisations made for Moodle.",13 +"MDL-47148","09/08/2014 13:11:13","Event monitor: Write behat tests for the tool","Write behat tests for the tool",20 +"MDL-47149","09/08/2014 13:12:57","Event monitor: Write QA tests for the tool","Write QA tests for the tool",20 +"MDL-47152","09/08/2014 15:38:06","Event monitor: Add help icon on subscriptions manage page","On subscriptions manage page, there should be a help icon which provide further details on each rule. This should be present in both the tables. This can possibly include information such as event name, module name, description, etc. Up to the assignee to decide the best amount of info. Since our help icon infrastructure only supports static content at this point, this might involve writing some yui code to generate custom panels for displaying the help content.",20 +"MDL-47153","09/08/2014 15:59:39","Event monitor: Trigger various events","When a rule critieria is met, an event should be triggered. In this issue we should create the event + unit tests",8 +"MDL-47171","09/09/2014 12:18:25","Event monitor: Remove dependency on MDL-46155","Either remove dependency on MDL-46155, or get MDL-46155 integrated",13 +"MDL-47242","09/15/2014 15:23:02","Fix nested custom_menu responsive display","Identified during MDL-45893, deeply-nested items have hover behaviour that's not consistent with root-level items. Responsive issues with dividers on 2.8 have been split off into MDL-47244.",5 +"MDL-47243","09/15/2014 16:48:30","Outcome items weight cannot be edited","Presently, the outcome weight is not editable when using the natural weighting aggregation method. I should be editable.",20 +"MDL-47244","09/15/2014 18:38:32","Dividers don't display well in responsive layouts","Identified during MDL-45893, dividers appear as horizontal lines in responsive menus when they should be vertical instead.",3 +"MDL-47252","09/16/2014 12:00:00","Discussion subscriptions visible (and broken) to guests","Discussion subscriptions visible (and broken) to guests # Create a new forum on the course front page # Create a discussion in the forum # Logout # View the forum as a guest #* *The envelope icons are visible, and clicking them gives an error*",8 +"MDL-47253","09/16/2014 13:09:55","Change default aggregation method to ""Natural""","At the moment the default visible aggregation methods is ""Natural"" only but at the same time the default aggregation method is ""weighed means"" Make sure that all behat tests pass!",8 +"MDL-47254","09/16/2014 13:26:11","Backup / restore aggregationcoef2 and weightoverride","The aggregationcoef2 needs to be backed up when a course using it is backed up.",5 +"MDL-47255","09/16/2014 13:27:27","Record aggregationcoef2 and weightoverride in grade history","When aggregationcoef2 is modified, it should store in grade history, and when something else is modified, the aggregationcoef should be stored",5 +"MDL-47260","09/16/2014 16:08:15","Undefined offset when using another aggregation method than Natural","# Set the aggregation method to 'Simple weighted mean of grades' # Set a weight on an item # Press 'Save changes' *Expected* - Nothing happens *Actual* - A wild notice appears",8 +"MDL-47274","09/17/2014 11:37:25","Course total is shown differently for student and teacher with ""Show totals excluding hidden items""","Last scenario in grade/tests/behat/grade_aggregation.feature fails as: {code} 01. ""110.00 (16.92 %)"" text was not found in the ""overview-grade"" element In step `And I should see ""110.00 (16.92 %)"" in the ""overview-grade"" ""table""'. # behat_general::assert_element_contains_text() From scenario `Natural aggregation'. # /home/marina/repositories/behat_master/moodle/grade/tests/behat/grade_aggregation.feature:296 Of feature `We can use calculated grade totals'. # /home/marina/repositories/behat_master/moodle/grade/tests/behat/grade_aggregation.feature {code} screenshots of student view vs teacher view attached ",0 +"MDL-47280","09/17/2014 16:47:46","Include YUI gallery modules properly","As per topic.",3 +"MDL-47294","09/18/2014 14:21:19","Upgrade S3 library in repository_s3 to 0.5.1-dev for Moodle 2.8 release","Library S3 Current version: 0.5.0-dev Latest version: 0.5.1-dev https://github.com/tpyo/amazon-s3-php-class changes: https://github.com/tpyo/amazon-s3-php-class/compare/56770370c33a5310c5e07a9d22aef8c162f150ee...master Make sure to update files: - repository/s3/S3.php (library itself) - repository/s3/thirdpartylibs.xml (indicate the current version) - repository/s3/readme_moodle.txt (indicate the current version and/or changes made) ",5 +"MDL-47295","09/18/2014 14:24:10","Upgrade AdoDB library to 5.19 for Moodle 2.8 release","Library: AdoDB Current version: 5.18 Latest version: 5.19 http://adodb.sourceforge.net/ (this library used by auth plugins only) Make sure to update files: - lib/adodb/ (library itself) - lib/thirdpartylibs.xml (indicate the current version) - lib/adodb/readme_moodle.txt (indicate the current version and/or changes made) ",5 +"MDL-47296","09/18/2014 14:27:18","Upgrade less.php library to 1.7.0.2 for Moodle 2.8 release","Library: less.php Current version: 1.7.0.1 Latest version: 1.7.0.2 https://github.com/oyejorge/less.php Make sure to update files: - lib/lessphp/ (library itself) - lib/thirdpartylibs.xml (indicate the current version) - lib/lessphp/readme_moodle.txt (indicate the current version and/or changes made) ",0 +"MDL-47297","09/18/2014 14:30:08","Upgrade Google APIs Client Library to 1.0.5 for Moodle 2.8 release","Library: Google APIs Client Library Current version: 0.6.0 Latest version: 1.0.5-beta https://github.com/google/google-api-php-client Make sure to update files: - lib/google/ (library itself) - lib/thirdpartylibs.xml (indicate the current version) - lib/google/readme_moodle.txt (indicate the current version and/or changes made) ",8 +"MDL-47298","09/18/2014 14:32:01","Upgrade Compatible password hashing library for Moodle 2.8 release","Library: Compatible password hashing There are no versions, just github branch, changes from the last pull: https://github.com/ircmaxell/password_compat/compare/2a7b6355d27c65f7e0de1fbbc0016b5b6cd8226b...master Make sure to update files: - lib/password_compat/ (library itself) - lib/thirdpartylibs.xml (indicate the current version) - lib/password_compat/readme_moodle.txt (indicate the current version and/or changes made) ",5 +"MDL-47299","09/18/2014 14:33:46","Upgrade PHPMailer to 5.2.9 for Moodle 2.8 release","Library: PHPMailer Current version: 5.2.7 Latest version: 5.2.9 https://github.com/PHPMailer/PHPMailer Make sure to update files: - lib/phpmailer/ (library itself) - lib/thirdpartylibs.xml (indicate the current version) - lib/phpmailer/readme_moodle.txt (indicate the current version and/or changes made) ",5 +"MDL-47301","09/18/2014 14:36:27","Upgrade Typo3 library to 4.7.19 for Moodle 2.8 release","Library: Typo3 Current version: 4.7.15 Latest version: 4.7.19 http://typo3.org/download/ Make sure to update files: - lib/typo3/ (library itself) - lib/thirdpartylibs.xml (indicate the current version) - lib/typo3/readme_moodle.txt (indicate the current version and/or changes made) ",5 +"MDL-47306","09/18/2014 14:47:10","Upgrade HTML2Text to 1.0.1 for Moodle 2.8 release","Library: HTML2Text Current version: 1.0.0 Latest version: 1.0.1 https://github.com/mtibben/html2text Make sure to update files: - lib/html2text.php (library itself) - lib/thirdpartylibs.xml (indicate the current version) - lib/adodb/html2text_readme.txt (indicate the current version and/or changes made) ",0 +"MDL-47307","09/18/2014 14:48:53","Upgrade Markdown to 1.4.1 for Moodle 2.8 release","Library: Markdown original+extra Current version: 1.4.0 Latest version: 1.4.1 http://michelf.ca/projects/php-markdown/ Make sure to update files: - lib/markdown/ (library itself) - lib/thirdpartylibs.xml (indicate the current version) - lib/markdown/readme_moodle.txt (indicate the current version and/or changes made) ",5 +"MDL-47345","09/22/2014 10:59:02","Category max grade is not properly updated when using extra credit","# Set up a gradebook with a sub category #- 2 items in the sub category (leave defaults) #- 2 items in the top category (leave defaults) # Set all categories to use 'Natural weighting' #- All the weights should have been set automatically #- Notice the sub category max grade is 200, and both items are weighted as 50 # Tick the extra credit checkbox of one of the items in the sub category # Click ""Save changes"" *Expected* - The category max grade is 100 - The category weight is equal to other items in the parent category *Actual* - The category max grade is 200 - The category weight is not equal to the other items in the parent category",8 +"MDL-47346","09/22/2014 12:01:09","Record aggregationstatus and aggregationweight in the history tables","The grade_grades table defines: - aggregationstatus - aggregationweight but those fields are not recorded in the history report. We have to decide whether or not this information is valuable enough to be saved. Implementing those fields after release might lead to inconsistent history as it will be very tricky (read impossible) to recompute the values of those columns during an upgrade. This issue should also answer the question ""Should these fields be displayed in the history report"" and if yes, add them.",20 +"MDL-47353","09/22/2014 13:18:55","Test the Grader report on a number of third-party themes","To ensure that the changes made to base and bootstrapbase themes are correctly affecting derivative themes, a number of third-party themes (including Standard) should be tested.",8 +"MDL-47358","09/22/2014 16:36:41","Ensure changes to categories and effects on grade items are recorded in Grade history","Changes made to and within categories in the Setup page should be recorded in the Grade history. These include changes to aggregation method, weight, max grade and other category settings. Where these changes affect grade items (through recalculation) these changes should also be recorded and shown in the Grade history report.",8 +"MDL-47373","09/23/2014 11:06:31","Fix bug where categories do not show Adjusted when they are","h4. Reproduction # Create three categories: A - Natural > B - Simple weighted >> C - Simple weighted # Adjust category B # B does not display ""Adjusted"" even though it is",8 +"MDL-47377","09/23/2014 14:42:09","Do not include items with a weight of 0 in the max grade.","This allows items to be graded, but have no effect on the final grade. E.g. a practice quiz.",8 +"MDL-47417","09/25/2014 12:53:36","grademax should be reset to 100 when switching from natural agg method to different one","if category with any other than natural agg method is created the grademax is set to 100. When we change the agg method to natural the grademax is adjusted. When we change the agg method from natural to anything else the grademax is NOT set to 100. P.S. I don't know atm if 100 is hardcoded or is a setting",5 +"MDL-47418","09/25/2014 12:54:14","Missing table header in behat step causes debugging.","This doesn't cause the test to fail - but I see this in the output: PHP Warning: array_shift() expects parameter 1 to be array, boolean given in /home/damyonw/Documents/Moodle/instances/im_demo1/moodle/lib/tests/behat/behat_general.php on line 1085 PHP Stack trace: PHP 1. {main}() /home/damyonw/Documents/Moodle/instances/im_demo1/moodle/vendor/behat/behat/bin/behat:0 PHP 2. Symfony\Component\Console\Application->run() /home/damyonw/Documents/Moodle/instances/im_demo1/moodle/vendor/behat/behat/bin/behat:32 PHP 3. Behat\Behat\Console\BehatApplication->doRun() /home/damyonw/Documents/Moodle/instances/im_demo1/moodle/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:121 PHP 4. Symfony\Component\Console\Application->doRun() /home/damyonw/Documents/Moodle/instances/im_demo1/moodle/vendor/behat/behat/src/Behat/Behat/Console/BehatApplication.php:68 PHP 5. Symfony\Component\Console\Application->doRunCommand() /home/damyonw/Documents/Moodle/instances/im_demo1/moodle/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:191 PHP 6. Symfony\Component\Console\Command\Command->run() /home/damyonw/Documents/Moodle/instances/im_demo1/moodle/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:895 PHP 7. Behat\Behat\Console\Command\BehatCommand->execute() /home/damyonw/Documents/Moodle/instances/im_demo1/moodle/vendor/symfony/symfony/src/Symfony/Component/Console/Command/Command.php:241 PHP 8. Behat\Behat\Console\Command\BehatCommand->runFeatures() /home/damyonw/Documents/Moodle/instances/im_demo1/moodle/vendor/behat/behat/src/Behat/Behat/Console/Command/B",5 +"MDL-47420","09/25/2014 14:32:01","Fix unit tests broken in the dev branch.","Currently they are failing: PHP Fatal error: Call to a member function get_aggregation_hint() on a non-object in /home/damyonw/Documents/Moodle/instances/im_demo1/moodle/grade/report/lib.php on line 436 ",8 +"MDL-47430","09/26/2014 15:33:53","Natural aggregation normalizes values to the range mingrade -> maxgrade - it should use 0 -> maxgrade","While this behaviour is logical - it is different to the old behaviour - and since nothing in the spec says to change it - we need to update the code to work like ""sum of grades"" used to and write a behat test to lock it in. Quick explanation of what should happen: Manual grade item with a min grade of 10 and a max grade of 20 If I get 15 for this item - 20 should be added to the category grademax and 15 added to the total (Assuming automatic weights). Manual grade item with a min grade of -10 and a max grade of 20 If I get 15 for this item - 20 should be added to the category grademax and 15 added to the total (Assuming automatic weights). A Scale should use the values 0 - number items in the scale. The first item in the scale gets a grade of 1, 0 is for items set to ""No grade""",13 +"MDL-47457","09/30/2014 06:24:43","We need a log in icon for the user menu.","We need a log in icon for the user menu. There is a todo in code for this issue (around user/lib.php line 688). The user menu usually shows an icon for each item, however if you log in as guest there is no icon for logging in as a valid user.",3 +"MDL-47460","09/30/2014 10:54:38","Event monitor: Fix missing alt on icons","The delete, edit and copy icons don't have an alt message, this is necessary to behat tests.",3 +"MDL-47490","10/01/2014 14:31:09","Finish VERP work in current sprint","Rather than pulling in work which was largely created in other sprints, this issue is a placeholder for the VERP-related work remaining in this sprint.",40 +"MDL-47492","10/01/2014 15:13:21","Add behat tests for displaying scales in gradebook","Some behat tests that ensure that scales are treated correctly in the Gradebook and we did not break it in the natural weighting branch. This also includes improvement to the table-reading behat steps that allows to specify column indexes instead of column headers",13 +"MDL-47520","10/03/2014 11:19:09","Styling changes for gradebook design improvements","Barbara needs more CSS classes for her work on MDL-47363 Seems reasonable to add those classes inside natural aggregation branch so she will (hopefully) only need to work with .less and .css 1. Add classes 'levelodd' and 'leveleven' (or 'depthodd' and 'deptheven') for cells in user report and setup page, and also make sure that 'level1', 'level2', etc. are added to each cell. This classes will be used for swapping background color for netsted categories and adding indentation to some fields. Add missing classes specifying which column cell belongs to, the table itself, the empty row, etc -2. Remove ""Category total"" row from setup page and move it's contents into the category header row. This will involve changing some behat tests checking the contents of the table.-",8 +"MDL-48145","11/10/2014 10:26:25","Decide Moodle 2.9 requirements and push them to environment.xml","We need to decide ASAP about all the PHP/DB/Moodle versions requirements and put all them into the environmental tests (adding them to all supported branches). At the same time, if there is any change in the PHP version... some changes have to be populated to various installers and replace them by the new one when corresponding. To get a list of candidates: grep -r '5\.x\.y' * | grep '\.php' (and look for MDL-39007 status, about to unify all those duplicated checks) (and don't forget about the MyISAM thing @ MDL-46064) Ciao :-)",13 +"MDL-49461","03/10/2015 14:24:38","Mark competencies complete when the course is completed","Completing the course will complete any assigned competencies by assigning the default value from the competency scale. Note that depending on the course competency rule we could set the competency as ""Recommended"", or do nothing.",5 +"MDL-49463","03/10/2015 14:27:39","A user can upload evidence or prior learning","This issue is about creating a model and interface for a user to add evidence. User evidences are stored using the persistent _user_evidence_. They may contain a title, description, one URL and files. Only one URL can be linked, others should be added to the description, this can be clarified in the help popup for the URL. At this stage the evidence will not be linked to a competency. ",13 +"MDL-49464","03/10/2015 14:29:20","Course competency links should be included in course backup/restore","The course competency should be restored, if the competency exists in the site (match of idnumber of both the competency and the framework).",2 +"MDL-49516","03/16/2015 13:36:03","Upgrade S3 library in repository_s3 to 0.5.1-dev for Moodle 2.9 release","Library S3 Current version: 0.5.1-dev 8413f6f70ad3bb79ae756958d4ba2238514b00af Latest version: 0.5.1-dev 2cf80b2 https://github.com/tpyo/amazon-s3-php-class changes: https://github.com/tpyo/amazon-s3-php-class/compare/8413f6f70ad3bb79ae756958d4ba2238514b00af...2cf80b2 Make sure to update files: - repository/s3/S3.php (library itself) - repository/s3/thirdpartylibs.xml (indicate the current version) - repository/s3/readme_moodle.txt (indicate the current version and/or changes made) ",5 +"MDL-49517","03/16/2015 13:36:04","Upgrade AdoDB library to 5.19 for Moodle 2.9 release","Library: AdoDB Current version: 5.18 Latest version: 5.19 http://adodb.sourceforge.net/ (this library used by auth plugins only) Make sure to update files: - lib/adodb/ (library itself) - lib/thirdpartylibs.xml (indicate the current version) - lib/adodb/readme_moodle.txt (indicate the current version and/or changes made) ",5 +"MDL-49518","03/16/2015 13:36:05","Upgrade less.php library to 1.7.0.3 for Moodle 2.9 release","Library: less.php Current version: 1.7.0.1 Latest version: 1.7.0.3 https://github.com/oyejorge/less.php Make sure to update files: - lib/lessphp/ (library itself) - lib/thirdpartylibs.xml (indicate the current version) - lib/lessphp/readme_moodle.txt (indicate the current version and/or changes made) ",0 +"MDL-49519","03/16/2015 13:36:06","Upgrade Google APIs Client Library to 1.1.2 for Moodle 2.9 release","Library: Google APIs Client Library Current version: 1.0.5-beta Latest version: 1.1.2 https://github.com/google/google-api-php-client Make sure to update files: - lib/google/ (library itself) - lib/thirdpartylibs.xml (indicate the current version) - lib/google/readme_moodle.txt (indicate the current version and/or changes made) ",8 +"MDL-49520","03/16/2015 13:36:07","Upgrade Compatible password hashing library for Moodle 2.9 release","Library: Compatible password hashing There are no versions, just github branch, changes from the last pull: https://github.com/ircmaxell/password_compat/compare/c91b1168bc53c26f56fc65f16958b5be45ca5dc9...master Make sure to update files: - lib/password_compat/ (library itself) - lib/thirdpartylibs.xml (indicate the current version) - lib/password_compat/readme_moodle.txt (indicate the current version and/or changes made) ",5 +"MDL-49521","03/16/2015 13:36:08","Upgrade PHPMailer to 5.2.9 for Moodle 2.9 release","Library: PHPMailer Current version: 5.2.7 Latest version: 5.2.9 https://github.com/PHPMailer/PHPMailer Make sure to update files: - lib/phpmailer/ (library itself) - lib/thirdpartylibs.xml (indicate the current version) - lib/phpmailer/readme_moodle.txt (indicate the current version and/or changes made) ",5 +"MDL-49523","03/16/2015 13:36:10","Upgrade Typo3 library to ??? for Moodle 2.9 release","Library: Typo3 Current version: 4.7.15 Latest version: ??? http://typo3.org/download/ Make sure to update files: - lib/typo3/ (library itself) - lib/thirdpartylibs.xml (indicate the current version) - lib/typo3/readme_moodle.txt (indicate the current version and/or changes made) Sorry - I can't actually tell which branch we pulled the code from. The readme_moodle.txt is not detailed enough.",5 +"MDL-49527","03/16/2015 13:36:14","Upgrade HTML2Text to 2.0.1 for Moodle 2.9 release","Library: HTML2Text Current version: 1.0.1 Latest version: 2.0.1 https://github.com/mtibben/html2text Make sure to update files: - lib/html2text.php (library itself) - lib/thirdpartylibs.xml (indicate the current version) - lib/adodb/html2text_readme.txt (indicate the current version and/or changes made) ",0 +"MDL-49528","03/16/2015 13:36:15","Upgrade Markdown to 1.5.0 for Moodle 2.9 release","Library: Markdown original+extra Current version: 1.4.1 Latest version: 1.5.0 http://michelf.ca/projects/php-markdown/ Make sure to update files: - lib/markdown/ (library itself) - lib/thirdpartylibs.xml (indicate the current version) - lib/markdown/readme_moodle.txt (indicate the current version and/or changes made) ",5 +"MDL-49533","03/16/2015 14:47:04","Move alfresco repository to plugins DB","It relies on a no longer maintained php library that does not work against current versions of alfresco. http://code.google.com/p/alfresco-php-sdk/",2 +"MDL-49599","03/20/2015 10:27:25","Deprecate old boxnet v1 API","Just noticed this in a TODO from MDL-42666 [~fred], any chance we can do this for 2.9? Cheers {code} /** * Migrate the references to local files. * * As the APIv1 is reaching its end of life on the 14th of Dec 2013, and we cannot * convert the existing references to new references, we need to convert them * to real files. * * @todo Deprecate/remove this function after the 14th of December 2013. * @return void */ {code}",1 +"MDL-50182","05/11/2015 08:33:35","Decide Moodle 3.0 requirements and push them to environment.xml","We need to decide ASAP about all the PHP/DB/Moodle versions requirements and put all them into the environmental tests (adding them to all supported branches). At the same time, if there is any change in the PHP version... some changes have to be populated to various installers and replace them by the new one when corresponding. To get a list of candidates: grep -r '5\.x\.y' * | grep '\.php' (and look for MDL-39007 status, about to unify all those duplicated checks) Ciao :-)",13 +"MDL-50253","05/15/2015 12:35:32","Competencies can be related to other competencies","You need to be able to link competencies to each other. This has no effect on the code logic, only display. Where we show the details we should also show the related competencies. In order for the migration from one framework to another to work we will only permit linking to competencies within the same framework at this stage. Note: duplicating frameworks should support this as well. Please consider this and raise another or report it to the related issue MDL-51602 if it's not finished yet.",8 +"MDL-50267","05/18/2015 11:16:26","Remove strings deprecated in 2.9","Remove strings from language files under the heading ""Deprecated in Moodle 2.9"" and the respective lines in deprecated.txt files See also https://docs.moodle.org/dev/String_Deprecation",1 +"MDL-50328","05/22/2015 15:18:11","Allow competencies to be assigned to a user learning plan","Followup from MDL-49460. This issue assumes that there already is a competency picker, or existing code, to select a competency using Javascript. Also, this issue should allow for a user to remove a competency from a plan. Implement reordering if you wish to, otherwise please raise a follow-up.",5 +"MDL-50439","06/02/2015 16:01:31","Create a universal block to display CBE related information","We will create a universal block for CBE related content and information, typically used on the dashboard it will not be limited to there. The block will display: # Plans #- Current active learning plans #- Progression of current plans #- Link to all learning plans # User competencies to review # Plans to review Maybe at a later stage this block could also link to the ""mentees"" of the current user, as in the users in which the current user has a specific capability. The block will define its own pages listing the elements cited above. For example, the user competencies will be reviewed directly from a block page, extending tool_lp templates to avoid code duplication. In theory the block will only rely on the API methods provided by tool_lp and not include any logic of its own.",5 +"MDL-50482","06/05/2015 13:51:42","Add ability to duplicate a learning plan template","The docs say ""Learning plan templates should allow ""duplication"" to create a new template for a new year (for example)"" but currently this behaviour does not exist.",1 +"MDL-51024","08/07/2015 11:30:01","Create a new page that can migrate a set of courses from one competency framework to another","The use case is for updating to a newer curriculum, but leaving already completed competencies un-modified. The workflow would be to either duplicate the old framework and make changes to it, or create a new one and import from file, then choose which courses should be moved to the new framework and trigger a script that will look for competencies that exist in both frameworks (matched on idnumber) and update the course / activity competencies to point to the new framework. This process should produce a report of competencies that were mapped, competencies that could not be mapped, as well as new competencies that did not exist in the old framework. From the spec: ""A competency framework can be duplicated, and there is an admin tool for migrating courses from one framework to another (as long as the idnumbers between the competencies in the frameworks can be matched)."" ",13 +"MDL-51026","08/07/2015 11:37:25","A competency framework can customise the terms for up to 4 competency levels","We will restrict the depth of the competency frameworks so that we can allow customisable language to describe each level of a competency. From the spec: ""The taxonomy refers to the naming for each level in the framework. Up to 4 levels are supported, and the name for each level can be set from the following list: Domain, Competency, Behaviour, Indicator, Outcome, Level, Concept, Value, Practice, Skill, Proficiency"" These will be provided by language strings, so they can be displayed in different languages (not taken from user input). All other screens should replace the word ""Competency"" and ""Competencies"" with the correct term depending on the depth of the competency. The number of terms will be fetched from a method in the framework class, just to ensure that later on we can change this number, or make it match a configuration variable. The term levels can either be saved in 4 columns, or in 1 column (_taxonomies_) with serialised data. The serialised data is less flexible but it seems unlikely that we will need to fetch just 1 term, or filter per term without loading the framework object. The terms are using constants and will be mapped to language strings, e.g.: {noformat} const TAXONOMY_DOMAIN = 'domain'; const TAXONOMY_COMPETENCY = 'competency';public function get_taxonomy($level); public static function get_taxonomy_for_term($constant); {noformat}",3 +"MDL-51029","08/07/2015 12:31:15","Add ""completion rules"" for all competencies in a framework that are branches","If a competency framework is configured to use 3 levels - levels 1 and 2 will allow completion rules to be configured so that when the ""leaves"" are marked complete - the ""branches"" can be marked as complete (or recommended) by the rule. https://docs.moodle.org/dev/images_dev/c/c9/cbe_spec06_v2.jpg One last option would be to leave the competency unchanged regardless of the status of its children.",8 +"MDL-51033","08/07/2015 12:52:35","Create User Learning Plans from a Learning Plan Template","See screenshot and description from spec: https://docs.moodle.org/dev/Competency_Based_Education#User_learning_plans The data in easy user plan will be exactly the same as the template, but also include the template ID as a reference to the original template. The user plan will be updated so that it gets its competencies from the template competencies when a link is present, this in order make it more efficient to update a template and related plans. The most complex part of this issue will probably be about creating the user interface which allows to pick users and cohorts. We can raise another issue to resolve this if need be. Note: Perhaps we can use the newly introduced auto complete field (MDL-51247?).",8 +"MDL-51034","08/07/2015 13:12:18","Add page to list competencies in a user learning plan","This page is linked in the menu, but doesn't exist currently. https://docs.moodle.org/dev/images_dev/b/ba/cbe_spec12.jpg -Also, this issue should allow for a user to remove a competency from a plan. Implement reordering if you wish to, otherwise please raise a follow-up.- Moved to MDL-50328",3 +"MDL-51035","08/07/2015 13:15:03","Create workflow for requesting approval, and approving draft learning plans.","https://docs.moodle.org/dev/Competency_Based_Education#User_learning_plans",1 +"MDL-51036","08/07/2015 13:15:59","Create a workflow for requesting a competency be reviewed, and reviewing outstanding requests","See Spec: https://docs.moodle.org/dev/Competency_Based_Education#User_learning_plans",1 +"MDL-51039","08/07/2015 13:32:28","Add completion rules to course - competency links","For competencies linked to a course - the link should be able to be configured to allow either: The competency should be ""Completed/Recommended"" when the course is completed. There should also be an option to do nothing. The screen should explain that in any case when the course is completed an evidence attached to the user's evidence for that competency. ",3 +"MDL-51042","08/07/2015 13:36:08","Create a statistics report for a learning plan template","https://docs.moodle.org/dev/images_dev/2/2a/cbe_spec13.jpg",5 +"MDL-51045","08/07/2015 13:39:55","Create a way to import a competency framework from a set of Moodle ""Outcomes"".","A simple way to create a competency framework from an existing set of outcomes. ",5 +"MDL-51130","08/17/2015 15:56:13","Deleting frameworks should delete associated data","Currently deleting a framework leaves orphan competencies behind.",1 +"MDL-51225","08/27/2015 19:33:40","Q&A forum recent activity reveals posts","Q&A forum posts should not be visible until users contribute to discussions. There is a disparity between what the forum shows and the recent activity block. The Q&A forum view excludes the posts but the recent activity block shows them. Steps to replicate 1) Create course 2) Enrol two students 3) Create forum with format as Q&A 4) Add discussion 5) Log in as student 1 6) Post reply to discussion (and change subject) 7) Log in as student 2 8) Open forum - observe that student 2 can not view student 1's post 9) Navigate to course and view recent activity block - observe that student 2 CAN view student 1's post subject",0 +"MDL-51233","08/28/2015 08:43:18","Remove unused ID number from learning plan templates","See discussion in MDL-51027.",1 +"MDL-51442","09/17/2015 14:59:38","Framework scales configuration must be mandatory","Currently it is possible for scales to be set without a default or proficiency value set. The form needs to throw a validation error when the scale was not properly defined when creating a competency framework. We consider the scale properly configured when: - It defines a default value - It defines at least one proficiency value Search for TODOs in the existing code.",2 +"MDL-51460","09/18/2015 15:24:22","List frameworks' API function does not support order","This is a recent regression, the parameters $sort and $order need to be combined because passed to _get_records_select_ otherwise the $order is not respected. Unit tests should be added to confirm this behaviour.",0.5 +"MDL-51504","09/23/2015 14:55:11","Template due date must not be set in the past","We need to validate the due date so that it cannot be set in the past: - For new templates. - For existing templates updating their due date. No need to bother about user plans for now.",1 +"MDL-51506","09/23/2015 15:32:32","Implement validation mechanisms in persistent derived classes","We need the models (persistent classes) to be able to validate themselves. The main reason behind this is that we cannot trust the data that is coming from other sources than web services or forms, for instance data manipulated by a developer, data from other sources such as CSV files, etc... The API methods are not the right place to put this validation because the persistent classes can be used directly and enforcing the API use will be very difficult. Defining validation within the model is the first step, later on we could re-use the validation definitions in forms, or even in external functions parameters/return definitions. When working on this, grep for TODOs related to MDL-51506.",2 +"MDL-51507","09/23/2015 15:39:45","External functions to create/update competency frameworks lack scale information","Frameworks must have a scale and the scale configured when they are created, and/or updated. The external functions associated with the frameworks lack the parameters to set those. It is understand that those parameters cannot be extensively validated until we fix MDL-51506, however this issue could still be worked on, and a ""TODO MDL-51506"" comment can be added to the code to notify of the missing bits.",1 +"MDL-51513","09/24/2015 02:15:36","Properly delete a competency","When doing task MDL-51130, we realized that we had to first properly complete the deletion of competency before working on deleting the entire framework. The tech spec are, at the moment, not completed and must be before starting the development. See some possible spec scenarios in the comments of MDL-51130. To be determined: can we allow the deletion of competencies when some students are already marked as proficient in those? We could ask a user to confirm, or create a special permission for deletion of such competencies. Note: competency::delete() removes the course competencies, that shouldn't be done there.",2 +"MDL-51557","09/25/2015 14:30:18","Add learning plans to the administration block in categories","Now that MDL-51107 is resolved we need to add links to the learning plans in the setting navigation of the categories. For now, let's start with the same nodes than the ones defined under _Site administration_. Note that those should not be displayed if the user does not have the required permissions. To find the category administration, go to /course/index.php?categoryid=2",0.5 +"MDL-51580","09/28/2015 18:44:02","Decide Moodle 3.1 requirements and push them to environment.xml (due date: 30/11/2015)","We need to decide ASAP about all the PHP/DB/Moodle versions requirements and put all them into the environmental tests (adding them to all supported branches). At the same time, if there is any change in the PHP version... some changes have to be populated to various installers and replace them by the new one when corresponding. To get a list of candidates: grep -r '5\.x\.y' * | grep '\.php' (and look for MDL-39007 status, about to unify all those duplicated checks) Ciao :-)",13 +"MDL-51598","09/30/2015 01:23:48","Wrong number of competencies displayed in the list of competency frameworks","In the list of competency frameworks all frameworks have the same number of competencies. The number displayed looks to be the number of records in table tool_lp_competency.",2 +"MDL-51602","09/30/2015 04:21:16","Add ability to duplicate a competency framework","The docs say ""A competency framework can be duplicated,"" but currently this behaviour does not exist. A framework can be duplicated. When duplicating a framework all the competencies linked must be duplicated as well. However, the new framework and competencies must not be linked to any course or template. The idnumber of the new framework will be updated following the same process than the one used for updating course shortnames upon restore, basically adding n where n is the first unique number found. See restore_dbops::calculate_course_names().",5 +"MDL-51638","10/02/2015 18:18:52","Use taxonomy terms in competency names everywhere","Once MDL-51026 is done, we need to use the taxonomy terms wherever we used to display ""Competency"", unless the taxonomy level is not defined.",1 +"MDL-51644","10/02/2015 19:29:55","Create persistent model for user_competency","This issue is about creating the basic API create CRUD user competencies. User competencies are links between the user and a competency, often they will be transparently created from a user plan. This issue should not be creating any external function or API yet as we will not even have a view, and also because the capability checks are tricky in this case as the model is only used to store information at this stage. Later on when we add competency reviews then we will have API and external functions. The _persistent_ model is the only thing we need. Non-exhaustive list of columns needed: * int id * int userid * int competencyid * int status (idle, in review, etc, will be defined later) (use constants) * int reviewerid * bool proficiency * int grade (from a scale) At this stage we will consider that the linked competency cannot be deleted without deleting the user_competency, therefore we do not need to duplicate the competency information like scale, etc...",3 +"MDL-51645","10/02/2015 19:34:35","Rename the plan capabilities","In order to improve the consistency we should assume that all capabilities mean _all_, except when they mention _own_, in which case they are only used when we are in a user context, and the context belongs to the logged in user. Rename: * planmanageall to planmanage * plancreatedraft to plancreateown * planviewall to planview ",0.5 +"MDL-51646","10/02/2015 19:48:03","Implement plan status","When a user is lacking permissions, their plan will automatically be created with the status ""Draft"". When a user has permissions, they can choose whether the plan is ""Draft"" or ""Active"". A user that only has the permission to _create_ their own plan cannot change the plan (including linked competencies) once it was set ""Active"" or ""Completed"", more will come with MDL-51035. Users with the permission to manage a plan can. The page listing the plans should contain tabs to display the list of Draft/Active/Completed plans. We can look at MDL-50976, if it does not seem to be closed to finish we can ignore that fact and raise a follow-up issue to implement the tabs. Note, in MDL-51805 we will freeze the result of the competencies of a user when the plan becomes complete. Also note that there will be more status added in the future when the plans will be reviewed, etc... The actions to be taken when the plan is marked as completed will be set in MDL-51805.",3 +"MDL-51647","10/02/2015 19:50:21","Create a schedule task to close the plans that reached their due date","The summary says it all. If you have any concern about timezones, let's talk about it. When a plan is completed, all the _user_competency_ associated with that plan will be copied over to _user_competency_plan_.",2 +"MDL-51682","10/07/2015 13:59:29","Fix all persistent sortorder handling to prevent ""holes""","There are a few problems with the handling of sortorder in the models. Those points are all related to each other: # New sortorders are created based on the number of rows in a table # When an entry is deleted, the sortorder is left untouched perhaps causing holes #- E.g. sortorders 1, 2, 3, 4 and 3 is deleted leads to 1, 2, 4 # Reordering is substracting/adding 1 to the sortorder, which is the problem when holes already exist.",2 +"MDL-51696","10/08/2015 06:35:17","Error on template competencies page","Problem when displaying the competencies of template because record is overwritten by the description in the export_for_template method {code} $record = $competency->to_record(); $record = format_text($record->description, $record->descriptionformat, $options); array_push($data->competencies, $record); {code}",0 +"MDL-51735","10/13/2015 09:41:39","Veiwing a lesson before questions / pages are added results in an exception","When a student attempts to view a lesson activity prior to content / question pages being added, the lesson displays an exception to the student Steps to reproduce: 1. As a teacher create a new lesson activity but do not add any pages to it 2. As a student view the newly created lesson activity Expected result: Student should get a message indicating that the lesson is not ready to be attempted. Actual Result: Debug info: Error code: cannotfindfirstpage Stack trace: line 481 of /lib/setuplib.php: moodle_exception thrown line 284 of /mod/lesson/view.php: call to print_error()",1 +"MDL-51758","10/14/2015 13:15:28","Remove password_compat library","Once we have increased our minimum version to PHP 5.5.0, we can drop use of this library in Moodle.",1 +"MDL-51791","10/15/2015 16:25:56","Some improvements to persistent validation","I noticed that: # We should check that the validate_* methods are protected # That an ID is NOT set when we call _create()_, that messes up with the validation # We should apply the basic validation to all properties before applying the custom one",1 +"MDL-51805","10/16/2015 18:45:22","Freeze a learning plan when it is marked as completed","When a learning plan is marked as completed we will archive the status of its competencies into an archive table or equivalent. Any further change to the competencies by users who have the permissions will be stored in the archived table, but an evidence will be added to the competency.",3 +"MDL-51856","10/22/2015 13:43:42","PHPUnit errors and plans fatal error","I found the following in the tests: {noformat} There were 2 errors: 1) tool_lp_external_testcase::test_search_competencies_with_read_permissions Unenxpected debugging() call detected. /home/fred/www/repositories/sm/moodle/lib/phpunit/classes/advanced_testcase.php:88 To re-run: vendor/bin/phpunit tool_lp_external_testcase admin/tool/lp/tests/externallib_test.php 2) tool_lp_external_testcase::test_search_competencies_including_related Unenxpected debugging() call detected. /home/fred/www/repositories/sm/moodle/lib/phpunit/classes/advanced_testcase.php:88 To re-run: vendor/bin/phpunit tool_lp_external_testcase admin/tool/lp/tests/externallib_test.php FAILURES! Tests: 80, Assertions: 491, Errors: 2. {noformat} And I noticed that user plans was broken.",0 +"MDL-51862","10/22/2015 15:55:56","Create a persistent model user_competency_plan","This model will archive the _user_competency_ records for a specific plan when the plan is frozen. It should contain the same information than the user_competency with the addition of the plan ID. This issue is just about creating the model.",3 +"MDL-51866","10/22/2015 18:27:44","Framework's scale cannot be changed once used","Once a user_competency framework is set on a competency that belongs to that framework the scale cannot be changed. The scale configuration (Proficiency and default values) can still be changed but it will not affect any of the existing user_competency objects.",1 +"MDL-51869","10/22/2015 19:31:55","Users can link evidence of prior learning to their competencies","Users can link evidence to their competencies if they have the capability _tool/lp:planaddevidence_. When they link an evidence to their competency, an _evidence_ is attached to the competency indicating that the user has linked evidence or prior learning, providing the link to the user's evidence page. Note: discuss the capability name, perhaps it's better to have _tool/lp:addevidence_ which would control both the upload of evidence and the linking of evidence. Confusion with the persistent _evidence_ need to be addressed as they are different.",3 +"MDL-51870","10/22/2015 19:47:31","Use new ""ajax"" definition of external functions","Looking at the logs we can notice a log of debugging messages because we are using _is_allowed_from_ajax_. We need to update all the functions definition to support ajax and remove these definitions. Example: {noformat} 'core_output_load_template' => array( ... 'ajax' => true, ), {noformat}",0.5 +"MDL-51942","10/28/2015 10:59:53","Ensure that constant MOODLE_INTERNAL is used everywhere","I noticed that some of the files in tool_lp do not have: {noformat} defined('MOODLE_INTERNAL') || die(); {noformat} We should add it to any file that is not directly accessed.",0.5 +"MDL-51953","10/29/2015 04:56:10","Missing four services definitions","When working on MDL-51870, I realized that 4 services definition were missing from db/services.php : * count_templates_using_competency * list_templates_using_competency * count_competencies_in_template * list_competencies_in_template These services are not currently used in the plugin, that's why we never had any problems.",0.5 +"MDL-51962","10/29/2015 13:14:22","Validate that the grade set in user_competency is valid","The grade in a user_competency should be validated against the scale.",1 +"MDL-51963","10/29/2015 13:17:15","Support custom scales per competency","It may be useful for each competency to declare a different scale, though we won't exactly implement support for it just yet. This issue is about creating a getter in competency persistent to retrieve the scale and scale config. For now it will only be retrieving the scale from its framework but it will be useful in the future if we want to add support for scale competencies.",1 +"MDL-51967","10/29/2015 13:34:04","Create a dialogue to view all the information about a competency","There will be many places where being able to view the full details of a competency will be very useful. For example when a student is viewing their plan they should be able to view the information about a competency without having to leave the page. Or when a teacher is linking competencies to a course. Or when a teacher is grading a bunch of competencies.",1 +"MDL-51968","10/29/2015 14:40:29","Remove the ability to change the userid of a plan","Remove the user ID parameter from the external functions that allow a change of ownership in a plan. And ensure that the API methods prevent the change as well.",1 +"MDL-52051","11/06/2015 19:17:01","Migrate to Dropbox API v2","Dropbox have release a new API increment, we probably should update to v2 before we get caught out when they drop v1: https://blogs.dropbox.com/developers/2015/11/dropbox-api-v2-launches-today/ {quote} At some point we'll likely deprecate the previous API v1, but we don't have specific plans to share now. We'll be sure to give developers plenty of warning. {quote} ",5 +"MDL-52052","11/06/2015 20:38:00","Import grades with an empty identifier causes bad upload but it doesn't show error message","When import grades with a csv like this (line 2 with an empty email): student-email;grade1 student1@testing-moodle-grades.com;5 ;7 student3@testing-moodle-grades.com;10 Moodle loads this: student1@testing-moodle-grades.com -> 7 student2@testing-moodle-grades.com -> - student3@testing-moodle-grades.com -> 10 student1 gets the grade in line 2 and no error message is shown. Says ""Grade import success"". If there are more students, the ones above the empty, take the grade of the student below. Thank you.",5 +"MDL-52062","11/09/2015 13:50:07","User's learning plan pages do not have a breadcrumb","When viewing a user's plans page, or a plan itself, there is not breadcrumb which makes it hard to navigate back and forth.",1 +"MDL-52104","11/12/2015 08:05:36","Improve UI for the change of states in plan","It was said in MDL-51805 that change of states in plan should work as follow : Always prevent a plan to be marked as completed from the plan editing form. Instead we will add an option ""Complete this plan""/""Reopen this plan"" in the plans page which will warn the user that reopening the plan will delete any customization done to the competencies. Note : A good implementation in api would be to prevent switching status (from/to complete) in api::update_plan and create a new specific method for that. This issue should also ensure that a plan cannot be modified when it is complete, only its user_competency_plan in some occasions (plan.php). ",3 +"MDL-52106","11/12/2015 15:57:14","Remove competency rules on parent when children are being moved or deleted","When used in rules, especially with the rule based on points, if a competency is moved then the validation for the parent will fail when edited. But more importantly the rule of the parent it is coming from and the rules of the parent where it is going to will be affected in a random way. Also our UI will not display rules that have been moved, or deleted. In order to prevent managers from messing up a framework we will prevent _move_, _delete_ and perhaps _add_ when the competency is being used in a rule.",3 +"MDL-52122","11/13/2015 18:19:20","Create an API to register evidence to competencies","We need to create an API that can be used to attach evidence to competencies, or more precisely user competencies. Perhaps api::create_evidence is all we need. At present I do not think we need to create an external function for an evidence as it's unlikely that an evidence will be added manually. Most of the time the evidence will be added following an event (course completion, manual grading, evidence of prior learning linked, ...). Evidences should never be removed or updated therefore we will not need other API functions for now. Note that a user_competency record must exist before an evidence can be attached to it therefore this issue will have to ensure that the record exists.",2 +"MDL-52229","11/19/2015 19:52:42","Handle hidden templates/frameworks when linking competencies","When a user is building a framework they can set their framework as hidden, in which case it will not show up in the different areas where a framework can be picked to then select some of its competencies. The same applies to templates, when the template is hidden it can not be selected to create a plan from that template. There is no security risks attached to this issue, which means that the functions listing the frameworks and templates use an optional argument to filter out the invisible template/frameworks. Everyone can list hidden frameworks/templates but the UI will only display the relevant ones (visible). Crafting a request will report the hidden frameworks/templates, and that's fine. However, the methods that are linking competencies to a framework/template should first check that the competency is not part of a hidden framework, in which case it cannot be linked. The method creating a plan from a template will perform the same check to ensure that the template is visible. Note that if a framework/template is hidden after the competency/plan was created nothing happens. The hidden option is just there to act as a draft/archived flag to only display the relevant options in the UI. If the competency/plan was already created then it remains visible regardless of the status of its origin. At a later stage we may decide to rename _visible_ to something more relevant. Or to have a _status_ on the framework/template (draft, active, archived). In that case a framework/template would have to be made ""Active"" to be visible in the relevant UI, and it could not be sent back as draft when used. Later maybe.",3 +"MDL-52233","11/20/2015 00:00:09","Show the idnumber of the competency in the user learning plan (and template)","Very small improvement I think should be made to make visible the idnumber of the competencies in a user learning plan for the following reasons : * Makes it standard with the way it is displayed in the competency frameworks. * Makes it easier for the user to know that a competency is a parent of another when the plan is containing multi-levels competencies. For example : ** Photograph S1 ** Compose S1.1 ** Expose S1.2 Note : Maybe having a method in persistent that returns the right output would be a good idea, since it would be used at many places.",0.5 +"MDL-52235","11/20/2015 01:03:36","Button ""Add new learning plan"" should not be displayed when permissions are missing ","I found out this small bug in the user list of learning plans (plans.php) : * Users with only ""tool/lp:planviewown"" or ""tool/lp:planview"", see the ""Add new learning plan"" button when they should not. ",0.5 +"MDL-52242","11/20/2015 12:08:51","Competencies listed in a completed plan must never change","When we get the competencies of a _completed_ learning plan, we need to get the list of competencies from the archived we created when the plan was marked as complete. The reason for this is because while a plan cannot be changed once it's complete, a template could change and those changes would be reflected in the plan. Once a plan is complete it should be frozen. There are a few ways to fix this: # Unlink the plan from its template upon completion (not recommended, heavy, relationship lost) # Copy the template_competencies to plan_competencies (almost acts unlink, heavy, adds weird conditional getters in $plan->get_competencies() # Add an additional condition to $plan->get_competencies() to generate the list of competencies from the archived competencies (sortorder of competencies is hard to figure out) I have started a patch for this, but tests failed because it broke the archiving mechanism. {noformat} diff --git a/admin/tool/lp/classes/plan.php b/admin/tool/lp/classes/plan.php index f55d4a7..3d84889 100644 --- a/admin/tool/lp/classes/plan.php +++ b/admin/tool/lp/classes/plan.php @@ -121,13 +121,19 @@ class plan extends persistent { */ public function get_competencies() { $competencies = array(); - if ($this->get_templateid()) { + if ($this->get_status() == self::STATUS_COMPLETE) { + // Get the competencies from the archive of the plan. + $competencies = user_competency_plan::list_competencies($this->get_id(), $this->get_userid()); + + } else if ($this->is_based_on_template()) { // Get the competencies from the template. $competencies = template_competency::list_competencies($this->get_templateid(), true); + } else { // Get the competencies from the plan. $competencies = plan_competency::list_competencies($this->get_id()); } + return $competencies; } diff --git a/admin/tool/lp/classes/user_competency_plan.php b/admin/tool/lp/classes/user_competency_plan.php index f89ed1d..8315a69 100644 --- a/admin/tool/lp/classes/user_competency_plan.php +++ b/admin/tool/lp/classes/user_competency_plan.php @@ -143,6 +143,38 @@ class user_competency_plan extends persistent { } /** + * List the competencies in this plan. + * + * @param int $planid The plan ID + * @param int $userid The user ID + * @return competency[] + */ + public static function list_competencies($planid, $userid) { + global $DB; + + // TODO Fix ordering. The order set in template_competency, or plan_competency is not applied here. + // Perhaps we should have copied the sortorder here as well. + $sql = 'SELECT c.* + FROM {' . competency::TABLE . '} c + JOIN {' . self::TABLE . '} ucp + ON ucp.competencyid = c.id + AND ucp.userid = :userid + WHERE ucp.planid = :planid'; + $params = array('userid' => $userid, 'planid' => $planid); + + // TODO MDL-52229 Handle hidden competencies. + $results = $DB->get_recordset_sql($sql, $params); + + $instances = array(); + foreach ($results as $key => $result) { + $instances[$key] = new competency(0, $result); + } + $results->close(); + + return $instances; + } + + /** * Get multiple user_competency_plan for a user. * * @param int $userid The user ID. {noformat} Along with this, this issue should also ensure that a user can not: - Remove a competency from a completed plan - Add a new competency from a completed plan ",2 +"MDL-52272","11/23/2015 18:32:27","Rename ""Status"" and ""State"" on plan page","The _Status_ column currently described the grade of a scale, we'll rename it to ""Grade"". The _State_ column showing the ""status"" of the competency (idle, in review, ...) should be changed to ""Status"".",0.5 +"MDL-52282","11/24/2015 14:51:10","Create a scheduled task to sync plans from template cohorts","The task will observe check if new users were added to a cohort and create the required plans. Note that when a plan is unlinked from a template the original template ID is stored. The cohort sync should not re-create plans that were unlinked.",3 +"MDL-52408","12/04/2015 14:35:04","api::list_related_competencies should not require manage capability","Everyone who can view the competency should be able to view the related competencies.",1 +"MDL-52418","12/05/2015 03:34:59","Invalid responses in learning plan templates and course competencies pages","Invalid responses javascript pop-ups in learning plan templates and course competencies pages when adding or deleting competencies. See attachments for more details.",0.5 +"MDL-52423","12/07/2015 12:19:49","Create a plan summary screen","We will recycle the page listing the competencies in a plan and add more information to it. The page currently does not display information about the plan itself, it should contain: - Due date - Status (Draft, Active, Complete) (Later we'll add review) - Option to change the status from here (just like on the plans page) - Reviewer (Added later when reviews are supported) - The template the plan is based on, and a link to if the user can view the template. - A button to unlink the plan from its template (warning required) (MDL-52423) - A button to edit the plan (cancelling the edit, or saving should return to the plan) The button to add competencies stays there. Note that a plan based on a template cannot be modified, it can only be unlinked. Also note that relevant capability checks must be made.",3 +"MDL-52424","12/07/2015 12:22:02","Plans page should show the template the plan is based on","On the page listing all the plans for a user we must show the template the plan is based on when there is one. ""Unlinking"" the plan from its template is done within the plan page, not from the list.",1 +"MDL-52426","12/07/2015 14:44:58","Template competencies page should not require manage permissions","This page should be accessible when the user can read the template, of course in that case they should not be able to change anything.",2 +"MDL-52432","12/07/2015 19:10:18","Add ability to unlink a plan from its template","On the page that shows the details of a plan we need to add an option to unlink the plan from its template. This should show a warning explaining that this not a reversible action.",2 +"MDL-52463","12/10/2015 00:26:22","Learning plan templates: Cannot sync cohorts at category level","I just found out that you cannot sync a learning plan template with a cohorts created at category level. Steps to reproduce : * In a category administration: ** Create a template and a cohort ** Go to the learning plan templates page and click on cohorts link ** *The cohort is not displayed in the selection list*",0.5 +"MDL-52482","12/11/2015 04:07:01","Poor performance on Moodle User Log report using Standard Log"," Issue: The Moodle User Log report using Standard Log is poor performing when the course has a large number of enrolled users and lots of activity. Example of note: mdl_logstore_standard_log size of 30372477 records We have noticed that when a course has thousands of enrollments and course activity that generates logs record in the upwards of 40,000 records that the Moodle User Log Report (/report/log/user.php) for that couse is taking taking minutes to generate. By comparison it only takes 2 seconds to bring a comparable report up using the Legacy Logs setting. We found the SQL in the report that causes the issue: {code} SELECT * FROM mdl_logstore_standard_log WHERE courseid = '????' AND userid = '????' AND anonymous = 0 ORDER BY timecreated DESC, id DESC LIMIT 0, 100 {code} In testing we applied added a temporary index and it resolved the performance issue: {code} create index quick_test on mdl_logstore_standard_log (courseid, userid, timecreated); {code} Possibly in relation to what was done in MDL-44998",2 +"MDL-52485","12/11/2015 15:07:07","Validate the duedate of a plan","The plan persistent does not validate the due date field. This issue should also ensure that updating a plan from a template will not cause problems because of this new validation. E.g. Can dates on templates be set in the past, or can latency in updating the plan be slow enough to fail due date validation?",0.5 +"MDL-52561","12/18/2015 22:32:44","Plan created from cohort and deleted are recreated by sync task","When we delete a user plan created from a template and a cohort all information associated to the plan is deleted from the database. So when the scheduled task to sync plans runs, it recreates the plan because there is no way to know that the plan was there before.",3 +"MDL-52594","12/23/2015 09:37:23","User competency grader should not rely so much on scaleconfiguration","The scale configuration should not contain anything else than the default and proficient values, the rest is redundant and should be retrieved from the corresponding competency or framework. In order to allow for the scale configuration data to be pruned later on we need to remove the dependency on the scale items in the JS grader.",0 +"MDL-52675","01/07/2016 15:44:44","When deleting a template delete or unlink derived plans","When a user delete a template, we have to ask: # Whether the derived plans should be deleted # Whether the derived plans should be unlinked _No need to ask them when there are no derived plans._ Deleting relations/dependencies should be delayed to other issues.",0.5 +"MDL-52676","01/07/2016 15:45:49","When deleting a template delete associated template_cohorts","Deleting a template should not leave template_cohorts behind.",1 +"MDL-52677","01/07/2016 17:18:26","False positive intool_lp_external_testcase::test_search_users","{noformat} 1) tool_lp_external_testcase::test_search_users Failed asserting that actual size 4 matches expected size 3. /home/fred/www/repositories/sm/moodle/admin/tool/lp/tests/externallib_test.php:2605 /home/fred/www/repositories/sm/moodle/lib/phpunit/classes/advanced_testcase.php:80 To re-run: vendor/bin/phpunit tool_lp_external_testcase admin/tool/lp/tests/externallib_test.php {noformat} This must be caused because some of the randomly generated users first and last names are matching.",0 +"MDL-52690","01/08/2016 05:36:42","Do not automatically create plans for big cohort","We should not create the plans automatically when template_cohorts are created if there are too many plans.",0.5 +"MDL-52696","01/08/2016 11:29:19","Better handling of template due date when creating plans","When creating plans from a template we should: # Handle due date validation errors during in the scheduled task for template cohorts # Hide the option to create plans from the UI when the validation of the due date will fail # Hide the option to add cohorts to templates when the validation of the due date will fail",0.5 +"MDL-52709","01/11/2016 13:57:55","Create C(R)UD events for competency frameworks","This issue will create 3 events: - \tool_lp\event\framework_created - \tool_lp\event\framework_updated - \tool_lp\event\framework_deleted From the top of my head I don't see any information to place in _other_. Those events should be triggered anywhere where a framework is created, updated, or deleted, if the code is well structured this should be 3 API methods. Tests are required for each event. See _events_test.php_ files. Documentation: https://docs.moodle.org/dev/Event_2#Properties",3 +"MDL-52710","01/11/2016 14:01:51","Create event for framework viewed","This issue will create 1 event: - \tool_lp\event\framework_viewed This event needs to be triggered in the views that display the framework. As Ajax, and WS, do not access the page directly a new WS function needs to be created to trigger the event remotely. See _mod_book_view_book_ for example. I would say that the only view we have displaying the framework so far is _competencies.php_. The event needs to be tested.",0.5 +"MDL-52711","01/11/2016 14:03:45","Create C(R)UD events for templates","This issue will create 3 events: - \tool_lp\event\template_created - \tool_lp\event\template_updated - \tool_lp\event\template_deleted From the top of my head I don't see any information to place in _other_. Those events should be triggered anywhere where a template is created, updated, or deleted, if the code is well structured this should be limited to API methods. Tests are required for each event. See _events_test.php_ files.",0.5 +"MDL-52712","01/11/2016 14:05:39","Create event for template viewed","This issue will create 1 event: - \tool_lp\event\template_viewed This event needs to be triggered in the views that display the template. As Ajax, and WS, do not access the page directly a new WS function needs to be created to trigger the event remotely. See _mod_book_view_book_ for example. I would say that the only view we have displaying the template so far is _templatecompetencies.php_. The event needs to be tested.",1 +"MDL-52713","01/11/2016 15:07:23","Add behat tests for CRUD operations on frameworks","The tests will assert the well functioning of the competency frameworks CRUD operations. This issue is not about CRUD on competencies.",2 +"MDL-52714","01/11/2016 15:08:42","Behat tests for templates CRUD operations","Those tests will assert the well functioning of the CRUD operations on templates. This will not cover the creation of plans from template, nor linking cohorts with templates.",2 +"MDL-52741","01/13/2016 13:02:52","Show the taxonomy level for a competency in the competency summary template","IE - everywhere the competency summary is shown it should include the term from the taxonomy (Level, Skill etc). The generic term is still competency - ie when you are displaying a list or generating a notification.",2 +"MDL-52743","01/13/2016 14:36:36","Add a statistics report to the course (competencies)","Show the percentage completed, Top X users Bottom X users Top X competencies Bottom X competencies",5 +"MDL-52744","01/13/2016 14:54:23","grade_competency_in_course missing security check","This function needs to check that the user has the tool/lp:coursecompetencygradable capability in the course.",2 +"MDL-52745","01/13/2016 15:44:47","Only show evidence for a completency in a completed plan up to the timestamp the plan was completed.","When viewing a completed plan, we do not want to see evidences created after the plan was completed. ",3 +"MDL-52747","01/13/2016 15:52:18","Show the courses a competency is linked to from the competency summary in plan page. ","This allows students to discover courses that could teach them a skill or competency.",3 +"MDL-52754","01/14/2016 05:34:45","Dropdown list of scales is not displayed when there's single quotes in values","When preparing a demo of the tool_lp plugin, I noticed that the dropdown list of scales is not displayed in the user competency screen when there's one or more single quotes (') in the scale values (See attachments). It seems that this character (and possibly other special characters) is not escaped properly.",2 +"MDL-52755","01/14/2016 05:51:49","Competencies sort order is not preserved when plan is completed","The sort order is changing when a plan status is set to completed and it should not (See attachments). To reproduce : * Create a new plan with status active * Add two competencies in the plan in the following order, name and idnumber : ** Competency 1.2 _cpt12_ ** Competency 1.1 _cpt11_ * Complete the plan * *You should see the competencies in the same sort order but it changed (now sorted by idnumber ASC)*",2 +"MDL-52757","01/14/2016 06:14:43","Course competencies: Problem when selecting users in the manual marking page","The first time you try, it is not possible to select another user in the list of the course competencies manual marking page. To reproduce: * *You can only reproduce with all the cache systems ON -> ""mdk run undev""* * Go in the course competencies section of a course and add a competency * Click on the competency to display the user competency screen (manual marking) * Try to show another user by selecting someone else in the list (See attachment) * *You should see that you are not redirected to this user and that the user is not in the list anymore* * *If you try again with another user, it works* * You can do this over and over again by refreshing the page and selecting someone else in the list.",2 +"MDL-52775","01/15/2016 09:22:31","api::get_course_competency is identical to api::list_course_competencies","It's missing the param for the competency id. Merge both.",1 +"MDL-52803","01/18/2016 14:40:57","Provide a way to hide/disable comments on competencies and plans","In a situation where competencies, or plans, can not be sent for review, it is unlikely that comments will be used at all. In this scenario we need to provide a way to disable the comments altogether. So far we thought of this: # Adding a capability to _cancomment_, and # Hiding the ""Comments"" area when the user can not comment and there are no comments. ",3 +"MDL-52847","01/20/2016 23:38:00","Error when duplicating framework whitout competencies","When we duplicate a framework without competency we get the following error: error/Error while duplicating the competency framework. File: ...l/lp/classes/api.php Line: 487",1 +"MDL-52860","01/21/2016 17:44:21","Add confirmation dialogue when removing a competency from a course","As the summary says.",1 +"MDL-52861","01/21/2016 17:51:27","The grading dialogue should show who is being graded","Noticed on the prototype site, after the dialogue opens there is no reference to the user that we're grading. (From the competency breakdown).",1 +"MDL-52959","02/01/2016 19:03:49","Create C(R)UD events for competencies","This issue will add, trigger and test the following events: - Competency created - Competency deleted - Competency updated",3 +"MDL-52960","02/01/2016 19:07:44","Created event for competency viewed","This event needs to be triggered when a single competency is being viewed. Mainly when the core of the information is the competency itself (not a template competency, not a plan competency, not a user competency, ...), just the competency is being displayed we will trigger the event. I can think of two places where we would do so: - When viewing all the competencies in a framework and selecting a competency - When opening the competency dialogue The event will be compatible via Ajax and triggered, not via templates, but from the ""Controllers"" which are responsible for displaying the information (e.g. view.php, AMD module rendering the template). Note that Ajax refresh of a portion of a page should re-trigger the event, in other words if you were to edit the title of a competency ""in-line"", and the code would then refresh the whole competency region, that should not retrigger a ""viewed"" event.",2 +"MDL-52979","02/03/2016 12:08:38","Only show course ratings / proficiency when viewing a competency in a course","Currently, when a rating is suggested for a competency, it is only displayed in the list of evidences - and so becomes lost in the long list of evidence. We should provide a hint of the suggested rating based on the aggregate of all the suggestions. E.g. Suggested ratings: Met (4), Not met (1) (possibly with hyper links to scroll to the most recent suggestion for each scale value). When rating in a course - we should also limit the evidence list to only the evidence provided in that course.",3 +"MDL-53019","02/07/2016 23:22:00","Decide Moodle 3.2 requirements and push them to environment.xml (due date: 13/06/2016)","We need to decide ASAP about all the PHP/DB/Moodle versions requirements and put all them into the environmental tests (adding them to all supported branches). All the still open linked issues have been cloned here from the 3.1 sister issue (MDL-51580). Usual discussions: - PHP min. version. - database versions. - Linked issues. - ... Feel free to propose areas to be discussed here. A numbered list with all them will be created to vote and decide the final outcomes of this issue. TIA and ciao :-)",13 +"MDL-53070","02/11/2016 06:03:11","Non-editing teachers missing view user competency capability","Not high priority but just mentioning that you cannot suggest grade as a non-editing teacher because you cannot view the user competency page in course (lacking teacher archetype for tool/lp:usercompetencyview). It is also not possible to display the ""Competency breakdown"" report. See attachments.",0.5 +"MDL-53084","02/12/2016 10:59:56","Unclear what we are viewing when in a user competency in a plan","When viewing a user competency from a plan, especially when the plan is completed, it is very unclear what we are viewing and why we can not rate a user any more. When the plan is not completed, I think we should display the plan as part of the content. When the plan is completed, we should also display a link to the plan, but emphasise that the plan is completed and that the competency being viewed is in the state it was when the plan was marked as complete. I don't know how to achieve this visually.",2 +"MDL-53152","02/17/2016 18:43:22","lessc Less compilation computes variable mathematics at a different time","I use a moodle theme which is based on bootstrapbase. After upgraded the moodle from 2.9 to 3.0-latest, the dropdown menu cannot be shown correctly. Compared with 2.9, I found the 3.0 missed one css style which is defined in theme/bootstrapbase/style/moodle.css: @media (min-width:{color:red}980px{color}){.nav-collapse.collapse{height:auto !important;overflow:visible !important}} In 3.0 it changed to : @media (min-width:{color:red}979px + 1{color}){.nav-collapse.collapse{height:auto !important;overflow:visible !important}} It is generated from theme/bootstrapbase/less/bootstrap/responsive-navbar.less, in which the variable @navbarCollapseDesktopWidth is refered. And the @navbarCollapseDesktopWidth is defined in theme/bootstrapbase/less/bootstrap/variables.less, like: @navbarCollapseWidth: 979px; @navbarCollapseDesktopWidth: @navbarCollapseWidth + 1; The solution is adding parentheses for @navbarCollapseDesktopWidth in theme/bootstrapbase/less/bootstrap/responsive-navbar.less, like: @media (min-width: (@navbarCollapseDesktopWidth)) { then generating the moodle.css file again by using: grunt css.",1 +"MDL-53160","02/19/2016 01:14:03","Create C(R)UD events for evidence of prior learning","This issue will add, trigger and test the following events: Evidence of prior learning created Evidence of prior learning deleted Evidence of prior learning updated ",0.5 +"MDL-53162","02/19/2016 03:55:03","Behat tests for plans CRUD operations","Test behat for: - create plan (form, template, et template cohort) - update plan - delete plan - view plan",1 +"MDL-53163","02/19/2016 03:57:41","Behat tests for plans workflow","- request review - cancel review - start review - finish review - make active - move to draft - complete plan - ....",3 +"MDL-53182","02/22/2016 13:09:24","Create events for plan workflow","All the workflow actions associated with a plan should trigger a specific event. Here is a non exhaustive list: - Plan approved - Plan reopened - Plan review requested - Plan review request cancelled - Plan review started - Plan review stopped - ... You may find _update_ events in the relevant API methods, the new events should replace those.",2 +"MDL-53185","02/22/2016 14:40:58","Big button to turn CBE on/off.","One setting to rule them all",3 +"MDL-53186","02/22/2016 15:09:18","Sending competencies for review from the evidence of prior learning interface","I realised that when I attach competencies to an evidence of prior learning I don't have a way to send them for review. That means that I should manually visit every single competency to then request the review. In order to improve this, I suggest that we: # Add an option to bulk ""Send linked competencies for review"" in #- As a checkbox, in the dialogue when picking competencies #- In the page of a specific evidence of prior learning - in a new menu along with the delete option # Display the current status of all the linked competencies, and name of the reviewer when there is one # Make the competencies a link to the user competency (outside the plan) ",3 +"MDL-53187","02/22/2016 15:11:10","Create events for user competency workflow","Create the events associated with the changes in status of a user competency: # \tool_lp\event\user_competency_review_requested # \tool_lp\event\user_competency_review_started # ...",2 +"MDL-53188","02/22/2016 15:28:39","Add event for when an evidence is attached to a user competency","This issue is about a single event, which is triggered when an evidence is added (api::add_evidence): - \tool_lp\event\evidence_created The event should include information in other such as: - usercompetencyid - competencyid - the action constant - the recommend flag I'm suggesting these because they are integers and may be useful for observers. Also the evidence ->to_record() data should be attached as a _record snapshot_. Same goes with the user_competency if we have it. Note that the _actionuserid_ will be the _userid_ in the event, whereas the user the user competency belongs to will be the _relateduserid_.",1 +"MDL-53189","02/22/2016 15:34:13","Create event for user competency viewed","This event will be trigger when a _user competency_ is viewed, whether in a course, a plan or by itself. - When it is viewed in a plan (or completed plan), the _other_ field will contain the plan ID. - When it is viewed in a course, the context will be the course context. - Else, it is viewed by itself. Don't forget to add the _record snapshot_.",2 +"MDL-53190","02/22/2016 17:25:06","Create event for evidence of prior learning viewed","Just an event for when a specific evidence of prior learning is viewed, triggered from the user_evidence.php file.",1 +"MDL-53192","02/22/2016 17:40:44","Rebase CBE to latest Moodle core","Fred needs to rebase CBE...",2 +"MDL-53193","02/22/2016 17:52:12","Add behat tests for CRUD of evidence of prior learning","Add some tests for when the evidence of prior learning are: - Created - Deleted - Edited - Viewed - Listed",2 +"MDL-53194","02/22/2016 17:54:33","Add behat tests for linking evidence of prior learning with competencies","This behat test will ensure that user can link evidence of prior learning with their competencies. There are mutiple places where linking can occur, at this stage there is the list of evidence of prior learning, or the evidence of prior learning page itself.",1 +"MDL-53195","02/22/2016 17:56:59","Undefined variable: coursecompetency warning in \tool_lp\api::get_user_competency_in_course()","There is an undefined variable $coursecompetency in \tool_lp\api::get_user_competency_in_course() (see [here|https://github.com/FMCorz/moodle/blob/cbe/admin/tool/lp/classes/api.php#L1129]. I think that it should be {{$competency}} I am not sure how to trigger the issue but, by setting {{$found}} to false, the following will be shown in the user course competency page. {code} Notice: Undefined variable: coursecompetency in /home/jun/moodles/cbe/moodle/admin/tool/lp/classes/api.php on line 1130 {code} ",1 +"MDL-53196","02/22/2016 18:07:58","Add relevant record snapshot to existing events","I failed to notice and explain what _record snapshots_ were and therefore most of the events in _tool_lp_ do not include any snapshot. This issue is about checking the existing events and where they are triggered from and add relevant snapshots where they are missing. I think this means: # Adding self to the _create_from_*()_ methods: {noformat} $event->add_record_snapshot(self::TABLE, $this->to_record()); {noformat} # Add extra snapshots where they are triggered #- For instance when a user competency is updated, adding the snapshot of the competency if we have it, etc...",1 +"MDL-53211","02/23/2016 14:18:16","Create a user_competency_course model and populate it on suggest","It has occurred that we need to store the suggestions that were applied in a course. Simply relying on the _evidence_ will make it hard to compute data for that course only, join, etc... so we will introduce a new model _user_competency_course_ which stores the proficiency and rating of a user in the context of a course. So, when a teacher is suggesting a rate from a course we will populate the table _user_competency_course_ and attach an evidence as we are currently doing. When a suggestion happens within an activity (e.g. triggered by auto completion) we will also record that at the course level. When the suggestion is in a context parent to a course we proceed as normal. MDL-52979 will take care of displaying the information in the views. At a later stage we may decide to rephrase ""Suggest"" if another word works better.",3 +"MDL-54554","05/12/2016 22:12:49","Improve error handling for unoconv (Universal Office Converter)","In lib/filestorage/file_storage.php the function create_converted_document is used to call unoconv via a PHP exec() call. The return value is not checked and the $output array is set but never used. I don't know if the intention was to revisit this before release but as it stands any problem with unoconv is going to fail silently (nothing logged) which isn't a good thing. In order to avoid meltdown in the support forums, this needs to be as robust as it possibly can be. ",5 +"MDL-54751","05/27/2016 02:17:06","Recycle Bin - deleting large complex objects forces user to wait","With the recycle bin enabled, deleting large, complex objects forces the user to wait until the backup process has completed before they can do anything else. When you delete small objects (e.g., labels, simple pages), the deletion occurs quickly. By ""deletion,"" I mean this workflow: 1. Turn editing on 2. Delete item 3. Turn editing off But when you delete a larger, complex object, step 3 above -- turning editing off -- can take a long time ( up to > 2 minutes), and there is no indication (other than what the browser provides) that something is happening. You basically have to wait for it to finish. Something that used to happen immediately -- turning editing off after deleting something (regardless of its complexity) -- can take minutes with the Recycle Bin enabled. An example of a ""large, complex object"" is a quiz with 95 questions and 155 student responses. Obviously, Moodle is working on backing up the quiz, and since it's rather complex (lots of responses), it takes time. The same thing happens on restore. Restoring this kind of quiz can take some time, but there isn't any kind of progress indicator to let the user know that something is happening and that it may take some time. The concern here is that with the recycle bin enabled, a fundamental aspect of the Moodle experience has changed; i.e., deleting some objects no longer happens quickly if they are complex. How long it takes for Moodle to return control when turning editing back off after deleting an object depends on how large/complex that object is. And Moodle provides no progress indicator that something is happening. We also saw this behavior when testing the recycle bin plugin our Moodle 2.7 site (we also saw session lock errors for large object deletions). We also see this issue on a test Moodle 3.1 server with the recycle bin enabled. While this quiz example may represent an outlier, users delete all sort of things... small and large objects.",5 +"MDL-54770","05/31/2016 12:25:16","PayPal enrolment plugin to support required SSLVERSION TLS v1.2 if possible","PayPal enrolment plugin to support required SSLVERSION TLS v1.2 if possible. As of June 17, 2016 PayPal will require HTTP 1.1 and SSL version TLS v1.2 see: https://devblog.paypal.com/upcoming-security-changes-notice/",1 +"MDL-54847","06/07/2016 05:10:48","HTML audio tag removed from forum post","A user wishes to embed a .wav file into a forum post. Adding the .wav file via the text editor's media button only inserts a hyperlink to the file (see MDL-54846). Using the text editor's source mode, the user attempts to embed the uploaded .wav file using the HTML 5 audio tag. However, upon saving, the audio tag is automatically removed so the file is not embedded. Using the same code in a page resource, the audio tag is not removed. *STEPS TO REPLICATE* 1. Create a forum activity. 2. Add a new post to the forum. 3. Click the Media button on the text editor. 4. Upload a .wav file and then click the insert media button. The .wav file is added to the page as a hyperlink. 5. Click the HTML button on the text editor to switch into source mode. 6. Update the HTML using the HTML 5 audio tag to embed the .wav file into the page. Same code: {noformat} The wav file should be embedded.
{noformat} 7. Submit the post. 8. Read the post. Also edit the post and click the HTML button on the text editor. OBSERVED BEHAVIOR: The .wav file is not embedded in the HTML. The audio tag has been removed. The resulting HTML: {noformat}The wav file should be embedded.
Your browser does not support the audio element. {noformat} EXPECTED BEHAVIOR: The audio tag is retained in the HTML. The .wav file is embedded into the forum post allowing the audio file to be played directly from the post. *REPLICATION LOCATIONS* Behavior has been replicated in 3.0.4 and 2.9.3. *ADDITIONAL INVESTIGATION NOTES* 1. The audio tag is removed from the forum post HTML regardless of the file type being embedded. For example, attempting to embed an .mp3 file with the audio tag also results in the audio tag being removed. 2. Behavior was replicated with both the Atto and TinyMCE text editors. *USER IMPACT* An instructor teaching a sound design course would like for students to be able to share their .wav files within forums. The .wav file format is not among the file formats currently handled by Moodle's media embedding features (see MDL-54846). A potential work-around would be manually entered the necessary HTML to embed the file, but this cannot be done when the audio tag is automatically removed.",3 +"MDL-54984","06/22/2016 07:44:14","Final deprecation / removal of MUC stuff deprecated in 2.6","From [~mr-russ], in devs chat: {quote} As a current example, the MUC is_persist set of functions was deprecated in 2.6, and is still there. At what point is it possible to remove it? {quote} It seems that we missed those (have not found them in this epic list), and there are a number of them: {code} $ ag 'deprecated since 2.' classes/definition.php 251: * @deprecated since 2.9 848: * @deprecated since 2.6 878: * @deprecated since 2.6 classes/store.php 269: * @deprecated since 2.5 classes/loaders.php 954: * @deprecated since 2.6 976: * @deprecated since 2.6 1003: * @deprecated since 2.6 1058: * @deprecated since 2.6 1109: * @deprecated since 2.6 tests/fixtures/lib.php 299: * @deprecated since 2.9 {quote} Ciao :-)",1 +"MDL-54988","06/22/2016 16:42:31","Final deprecation of methods from lib/modinfolib.php","I found is_user_access_restricted_by_group(), get_deprecated_group_members_only() and build_section_cache() deprecated in 2.8 Also $standardmethods also refer to deprecated methods (from 2.6) ",1 +"MDL-55126","07/05/2016 14:42:12","Deprecated get_records_csv() and put_records_csv()","While searching for php 7.1 incompatible code I found methods get_record_csv() and put_records_csv() that are never used, have some debug echo and also use \r\n as the line separator.... We need to deprecate them",1 +"MDL-55192","07/12/2016 17:11:49","Final deprecation of add_to_log()","It's been deprecated since 2.7. ",1 +"MDL-56223","10/01/2016 07:42:20","CLI Calendar Event Updated/Created bug affecting database/logs","Moodle v3.0.3+ (Build: 20160324) We were seeing some CPU spikes and overloaded php-fpm threads which seemed to be affecting one of our nodes making it unresponsive (we have 3). Further research looks like it may be related to random calendar events in the logs. They are intermittent with approx 1071 transactions per second occurring intermittently (looks like about every hour and 15 mins). They are always related to the same user with Calendar Event Updated/Created User full name: Administrator Affected user: name of one specific user Event context: User: same user as above Component: system Event name: Calendar event updated/created Origin: cli Is this related to https://tracker.moodle.org/browse/MDL-46539 ? ",3 +"MDL-56789","11/07/2016 11:50:47","Recycle bin warns of pending grade items being deleted even if no grade items are being deleted.","At the moment, when any module (or resource) is deleted (via the recycle bin) the gradebook will display a warning that grade items are pending deletion. This is regardless of whether the deleted item has any grade items to delete or even uses the gradebook.",1 +"MDL-57487","12/21/2016 18:19:23","Final deprecation of xxx_print_overview() and related functions","These were deprecated in -MDL-57434- (please check the commit as a WS was also deprecated). Also, please remove the strings from the activity modules that are only used by these deprecated functions.",1 +"MDL-57618","01/11/2017 11:57:01","Remove strings deprecated in 3.3","Remove strings from language files under the heading ""Deprecated in Moodle 3.3"" and the respective lines in deprecated.txt files See also https://docs.moodle.org/dev/String_Deprecation ",1 +"MDL-57632","01/12/2017 14:25:07","Final deprecation of media_manager::setup()","Final deprecation of media_manager::setup(). It was deprecated in MDL-57316",1 +"MDL-57678","01/17/2017 23:02:48","Select categories widgets does not properly handle entities","We have found a minor regression of MDL-55564 which we stumbled upon while working on one of our plugins but which can also be seen on /admin/settings.php?section=enrolsettingsldap: * There is a settings widget to display a list of categories. The content of the widget is fetched from make_categories_options() in /course/lib.php. The function returns a list of categories which is indented by {code} {code}entities. * In 3.2, the list of categories is not correctly indented anymore because the {code} {code} entities arrive in the browser as {code} {code} (tested in theme_boost and theme_clean). * According to [~davosmith] who investigated this problem for us, {quote}the reason for the output is MDL-55564 - all the admin settings are now output via templates, which means that the code is automatically cleaned to escape any potentially bad characters (& < >). Unfortunately, this leads to the spaces becoming double-encoded in this case.{quote} In our plugin, we will handle this problem as an intermediate solution by using {code} $categories = make_categories_options(); foreach ($categories as $id => $category) { $categories[$id] = html_entity_decode($category); } {code} before creating the settings widget (as a reference for the reviewer: https://github.com/moodleuulm/moodle-local_resort_courses/blob/master/settings.php#L64), but it would be nice if this problem could be investigated by Moodle HQ as the function make_categories_options() is designed to output the list indented, but the template rendering doesn't seem to be compatible anymore. Thanks, Alex",0 +"MDL-57682","01/18/2017 16:25:04","Videojs sends full lang strings for plugin on every page","Every page now contains a huge chunk of JS params to feed the language pack to videojs. I have been working hard to get rid of JS bloat from every page and this is a step backwards. {code} videojs.addLanguage(""en"",{ ""Play"": ""Play"", ""Pause"": ""Pause"", ""Current Time"": ""Current Time"", ""Duration Time"": ""Duration Time"", ""Remaining Time"": ""Remaining Time"", ""Stream Type"": ""Stream Type"", ""LIVE"": ""LIVE"", ""Loaded"": ""Loaded"", ""Progress"": ""Progress"", ""Fullscreen"": ""Fullscreen"", ""Non-Fullscreen"": ""Non-Fullscreen"", ""Mute"": ""Mute"", ""Unmute"": ""Unmute"", ""Playback Rate"": ""Playback Rate"", ""Subtitles"": ""Subtitles"", ""subtitles off"": ""subtitles off"", ""Captions"": ""Captions"", ""captions off"": ""captions off"", ""Chapters"": ""Chapters"", ""Close Modal Dialog"": ""Close Modal Dialog"", ""Descriptions"": ""Descriptions"", ""descriptions off"": ""descriptions off"", ""Audio Track"": ""Audio Track"", ""You aborted the media playback"": ""You aborted the media playback"", ""A network error caused the media download to fail part-way."": ""A network error caused the media download to fail part-way."", ""The media could not be loaded, either because the server or network failed or because the format is not supported."": ""The media could not be loaded, either because the server or network failed or because the format is not supported."", ""The media playback was aborted due to a corruption problem or because the media used features your browser did not support."": ""The media playback was aborted due to a corruption problem or because the media used features your browser did not support."", ""No compatible source was found for this media."": ""No compatible source was found for this media."", ""The media is encrypted and we do not have the keys to decrypt it."": ""The media is encrypted and we do not have the keys to decrypt it."", ""Play Video"": ""Play Video"", ""Close"": ""Close"", ""Modal Window"": ""Modal Window"", ""This is a modal window"": ""This is a modal window"", ""This modal can be closed by pressing the Escape key or activating the close button."": ""This modal can be closed by pressing the Escape key or activating the close button."", "", opens captions settings dialog"": "", opens captions settings dialog"", "", opens subtitles settings dialog"": "", opens subtitles settings dialog"", "", opens descriptions settings dialog"": "", opens descriptions settings dialog"", "", selected"": "", selected"" }); {code}",0 +"MDL-58203","03/09/2017 15:40:22","Allow a per user ordering of the courses in the myoverview dashboard","A user should be able to change the ordering of the courses in the ""sort-by-courses"" view of the myoverview block by dragging them into a different order. The ordering should be stored on a per user basis. edit: suggestion from linked issue that sort order should be matched in the ""My courses"" listing",1 +"MDL-58253","03/14/2017 13:11:35","Boost breaks javascript form validation","The Boost theme does not set id property for some form elements. Therefore, client-side validation fails on some occasions. Example: {code:php}$items = ['' => 'Select', '1' => 'Item 1', '2' => 'Item 2']; $mygroup = []; $mygroup[] = $form->createElement('select', 'myselect', null, $items); $mygroup[] = $form->createElement('link', 'mylink', null, '#', 'Click here'); $form->addGroup($mygroup, 'mygroup', 'Select set'); $form->addGroupRule('mygroup', array('myselect' => array(array(null, 'required', null, 'client')))); {code} Using Boost, users are able to submit the form even if they leave the required field empty. The reason is in file lib/formslib.php the following line fails: {code:php}Y.Global.fire(M.core.globalEvents.FORM_ERROR, {formid: \'' . $this->_attributes['id'] . '\', elementid: \'id_error_' . $escapedElementName . '\'}); {code} as there is no element with that element id in the page. This is fine in More or any other non-Boost based themes.",5 +"MDL-58584","04/13/2017 04:07:32","Deleting a temporary table forces a reload of the databasemeta cache","-MDL-51374- introduced new behavior with temporary tables and the database cache; the creation and deletion of temporary tables isn't supposed to force a cache reload. This works on table creation but not deletion. The issue is that the temporary table is unlisted as such before the cache is reset, so the cache reset code doesn't know it was a temporary table and resets the whole cache. This leads to performance issues if you're running a job which creates and deletes numerous temporary tables, such as mass-creation of backups. This is the order of operations when deleting a temporary table: # database_manager->drop_table() ## sql_generator->getDropTableSQL() ### moodle_temptables->delete_temptable() ## database_manager->execute_sql_arr() ### moodle_database->change_database_structure() #### moodle_database->reset_caches() To get the desired behavior I think the code in delete_temptable() needs to fire after the cache is reset. While examining my development environment I saw SHOW TABLE queries and column parsing after every backup and restore operation.",0 +"MDL-59502","07/12/2017 04:58:45","Deprecate search engines add_documents implementations returning 4 arguments","In MDL-59039 we introduced changes to add_documents, now this method should return an extra $partial boolean. We still support implementations returning 4 elements but not forever, this issue is about removing this 4 returned elements compatibility.",3 +"MDL-59524","07/13/2017 15:34:02","Remove strings deprecated in 3.4","Remove strings from language files under the heading ""Deprecated in Moodle 3.4"" and the respective lines in deprecated.txt files See also https://docs.moodle.org/dev/String_Deprecation ",1 +"MDL-59639","07/27/2017 19:35:43","Browser back button should work as expected in the administration menu with Boost theme","A well known 'rule' of the web is not to compromise the functionality the browser's back button Unfortunately, the admin pages do this. To reproduce.... * From the flat menu, choose site administration * Select (for example) Appearance tab and then theme settings * The theme settings form appears. * Press 'back' You would expect to be back to the previous page - the Appearance tab. However, you are not. You are viewing the first tab of the administration menu. ",1 +"MDL-60013","09/04/2017 11:56:31","Final deprecation for core/modal_confirm","Phase 2 deprecation for the core/modal_confirm AMD module.",1 +"MDL-60126","09/14/2017 13:06:17","Competency user data is not being erased when user gets deleted","All the CBE related user data is not removed when the user gets deleted. We need to discuss and decide if all user data should be removed or just the data the user has added (eg. evidence). We should also consider deleting the users files related to competencies (eg. evidence files) and then in the upgrade add an adhoc step to be called which deals with the deletion. Please read comments on MDL-59994.",1 +"MDL-60817","11/15/2017 23:23:08","Notify the user when the original file extension has been removed or modified upon file editing in the filepicker","Quite commonly, users remove the document file extension when editing the filename in the filepicker, without being aware of that. In some specific cases, for ex. students editing the name of an existing assignment submission file, if the extension is removed or modified it can cause failure in the document conversion in the assignment. Improving the UX in the filepicker, by notifying the users when the original file extension has been modified would greatly reduce these occurrences.",1 +"MDL-60827","11/16/2017 15:55:31","OAuth 2 still expecting email verification after ""Require email verification"" has been disabled","Some users when they try to login on moodle receive the fallowing massage "" This account is pending email confirmation. "" even if I have the setting Site administration -> Server -> Oauth 2 Services -> Require email verification ( Unchecked ). It seems that users don't find the confirmation mail ( probably ended up in spam and was delete ). Is it possible to resend the confirmation email ? or any other way to solve this problem ? The authentication method is by using OAuth 2 Google service ",3 +"MDL-60856","11/20/2017 15:51:23","Remove behat steps deprecated in 3.5","go through lib/tests/behat/behat_deprecated.php and remove steps that were deprecated in Moodle 3.5 (or earlier) please add to the description if you know of any other deprecated behat functionality outside of this file that needs to be removed",1 +"MDL-61389","02/08/2018 04:39:18","Forum: ""Discuss this topic"" accessibility","*""Discuss this topic"" links are not descriptive and do not have programmatically associated context* Applies to: WCAG 2.0 A 2.4.4 ""Link purpose (in context)"" Description: The links used to open discussion topics are labelled ""Discuss this topic"", which is not descriptive. There is no programmatically associated context announced with this link. Steps to replicate: # Create a forum with the type ""{{Standard forum displayed in a blog-like format}}"" # Create a discussion. # Start JAWS or NVDA # Open the links list (Insert+F7) # Locate the ""Discuss this topic"" links presented in the links list. Note that it is not possible to determine from the links list which topic will be opened by activating these links.",0 +"MDL-61390","02/08/2018 04:41:37","Forum: Heading structure on Search results page","*Incorrect Heading structure on Search Results page* Description: The headings on the search results page when searching forums do not correctly use heading levels to convey the hierarchy/structure of hte page. Currently “Search Results” is displayed as a heading level 3 with individual search result items as heading level 2. Steps to replicate: # Open a forum # Search the forum for a known present search term # View the headings list on the search results page",0 +"MDL-61649","03/15/2018 00:05:33","Several core emails provide only text format","Some core emails (see list below) only provide the email_to_user function with a text format message rather than providing the (currently optional) HTML message as well. This has two drawbacks: 1) Users who opt to receive HTML emails, will sometimes (with no obvious pattern) recieve text emails from their Moodle site which might make them wonder if their settings are correct and/or if these messages are really coming from their Moodle. Many of these messages are around authentication, so that confidence is probably important. 2) Sites that use the new email wrapping mustache templates core/html_email.mustache will have these text only emails automatically converted to HTML, which works fine for text only content, but anything with a link in it will no longer be clickable, just displayed as text. $autohtml = trim(text_to_html($messagetext)); Possible areas to improve: lib/authlib.php 781=function login_lock_account($user) \{ 822: email_to_user($user, $supportuser, $subject, $message); lib/classes/task/send_failed_login_notifications_task.php 29=class send_failed_login_notifications_task extends scheduled_task \{ 177: email_to_user($admin, \core_user::get_noreply_user(), $subject, $body); lib/moodlelib.php 6100=function setnew_password_and_mail($user, $fasthash = false) \{ 6129: return email_to_user($user, $supportuser, $subject, $message); 6139=function reset_password_and_mail($user) \{ 6173: return email_to_user($user, $supportuser, $subject, $message); 6232=function send_password_change_confirmation_email($user, $resetrecord) \{ 6252: return email_to_user($user, $supportuser, $subject, $message); 6262=function send_password_change_info($user) \{ 6282: return email_to_user($user, $supportuser, $subject, $message); 6303: return email_to_user($user, $supportuser, $subject, $message); user/edit.php 273: if (!$mailresults = email_to_user($tempuser, $noreplyuser, $emailupdatetitle, $emailupdatemessage)) \{ Possibly it's worth considering making the HTML format non-optional.",1 +"MDL-62497","05/18/2018 10:41:27","Add a new transpilation tool for ES6","Need to look at a transpilation tool for ES6. It would be _nice_ if it transpiled to and AMD module, and took precedent over the existing AMD modules if there is a name clash. This way we can migrate existing AMD code to ES6 native, without breaking existing AMD modules using that code.",1 +"MDL-62609","05/31/2018 09:00:39","Remove strings deprecated in 3.6","Remove strings from language files under the heading ""Deprecated in Moodle 3.6"" and the respective lines in deprecated.txt files See also https://docs.moodle.org/dev/String_Deprecation ",1 +"MDL-62711","06/14/2018 10:21:31","Modal action buttons are now centered with additional spacing","There are examples of dialogues working in different ways in the past - so what really needs to happen is a decision should be made on how action buttons for a modal should work and this should apply to every modal in Moodle with some useful checking of many different modals to confirm that this is the intended behaviour. MDL-62160 is related in that this issue changed the behaviour for everything to comply with a quiz specific modal - but this affects all of Moodle and needs proper discussion and agreement. Here is an example of a badly displaying modal which was fine before. !image-2018-06-14-09-20-41-093.png!",3 +"MDL-63032","08/01/2018 10:50:04","CLONE - Update windows timezone list in core_date"," Update lib/classes/date.php badzones to the latest time zone information. https://support.microsoft.com/en-us/help/973627/microsoft-time-zone-index-values should translate over to http://php.net/manual/en/timezones.php Use the IANA timezone information database - https://www.iana.org/time-zones Please create a clone of this issue for next version before closing this",3 +"MDL-63048","08/02/2018 11:47:38","CLONE - Remove old class renames","core_component looks for COMPONENT/db/renamedclasses.php files, it allows us to avoid traumatic transitions and BC breakages by listing classes that have been removed. We need to clean the list at some point.",3 +"MDL-63070","08/03/2018 08:53:49","QuickForms library upgrade","This is long overdue. We should at least be using the final version of the library from git, patched appropriately with those changes made already in our history.",2 +"MDL-63127","08/14/2018 09:51:57","Redis Cache: implement compression","Based on https://tracker.moodle.org/browse/MDL-59880 Implements GZIP compression for data before sending it to Redis.",1 +"MDL-63252","08/28/2018 17:42:43","XMLDB check defaults returns false warnings ","Hi, When we use tool ""_Site administration / Development / XMLDB editor / Check Defaults"" ,_ it returns false warnings with some integer values. Sample : * Table: question. Field: defaultmark, Expected '1' Actual '1.0000000' * Table: question_answers. Field: fraction, Expected '0' Actual '0.0000000' * Table: question_attempts. Field: maxfraction, Expected '1' Actual '1.0000000' * Table: grade_items. Field: grademax, Expected '100' Actual '100.00000' * ..... This problem is not present in an old version of Moodle (3.1.5) After searching in source, I found a difference in file $WWWROOT/admin/tool/xmldb/actions/check_defaults/check_defaults.class.php (line 97) In Moodle 3.5 , the test is : {code:java} if ($physicaldefault !== $xmldbdefault) {{code} In Moodle 3.1 it was: {code:java} if ($physicaldefault != $xmldbdefault) {{code} I suppose that the problem comes from the test "" != "" tests only the value , "" !== "" tests the value and type I try to change "" !== "" to "" != "" in my Moodle 3.5 and get no warnings Thanks a lot",0 +"MDL-63261","08/30/2018 14:31:57","Final deprecation of web services in message/externallib.php","A whole bunch were deprecated due to MDL-57272 and MDL-63676. Do a grep for 'MDL-63261' in the codebase to find out what can be removed.",1 +"MDL-63285","09/04/2018 11:29:02","Slow fetching of calendar events","One of our plugins (block_semester_sortierung) started experiencing very slow loading times after the events API was rewritten. After doing some optimizations in the plugin, it was found that the bottleneck of the event fetching lies in the {\{\core_calendar\local\event\strategies\raw_event_retrieval_strategy::get_raw_events_legacy_implementation(...) }} function, more specifically, in the sql subquery which is used to fetch unique events with minimum priority. The problem seems to be that the subquery performs a search in all of the user(s) courses, regardless whether a list of course ids was already supplied as a parameter to get_raw_events_legacy_implementation(..). With users that have a lot of courses (e.g. professors at universities) with a lot of events, this results in very slow fetching of events even for a single course (because the subquery matches against all of the user courses). The bug is hard to reproduce, because it requires a user who is enroled in many courses, and the courses need to have events in them. Here is the that triggers the bug: {code:java}$vault = \core_calendar\local\event\container::get_event_vault(); $vault->get_events( null, // time start from null, // time start to time() - 6 * 31 * 24 * 60 * 60, // time sort from = 6 months ago 0, // time sort to = 0 null, // timestartafterfevent null, // timesortafterevent 200, //event limit CALENDAR_EVENT_TYPE_ACTION, // event type [$USER->id], // array of users null, // array of group ids $courseids, // array of course ids null, // array of category ids true, // with duration true, // ignore hidden function ($event) { // filter return $event instanceof \core_calendar\local\event\entities\action_event_interface; } ); {code} I have given as affected versions 3.5 and 3.5.1, because the function\{{ get_raw_events_legacy_implementation(..)}} was reworked quite a bit between 3.4 and 3.5; however, it still didn't fix the slow loading issue. Here is a patch that fixes this problem: [^event_fetch.patch] All it does is when an array of courseids is provided as a parameter, the same list is used for the subquery too, and not the whole user course list. Related issues: https://tracker.moodle.org/browse/MDL-60402 https://tracker.moodle.org/browse/MDL-59438 ",3 +"MDL-63580","10/08/2018 10:51:33","Deprecate dupe cron_run_single_task() function","Working on MDL-60514 we created a new class that does cron_run_single_task() never used again in the core.",3 +"MDL-63612","10/10/2018 16:37:35","Course card pattern colours may be specified by an admin","In MDL-63337 the course colour hex values were move to the course_summary_exporter.php in course/classes/external These colours should be configurable form a location like the themes or global theme settings.",3 +"MDL-64494","01/03/2019 06:30:12","Contrast of colours for success, info, error and warnings text is not accessible","The success, error, warning and info text classes default colours from Bootstrap are not accessible. WAVE accessibility checker reports: ""Very low contrast between foreground and background colors."" This affects all pages using the Bootstrap success, error, warning and info classes including the performance info in the footer of each page and all ""notifications"" using a Bootstrap alert.",8 +"MDL-64821","02/11/2019 02:06:19","Create new discussion view for forum","Create a new discussion view mode that matches the prototype. Prototype: https://projects.invisionapp.com/share/2ATP7L7JYXP#/screens/381579783 (previously https://projects.invisionapp.com/share/9GQ8R2O3H7J#/screens/350489133) h4. Beyond scope of this issue: * Discussion header content (e.g. subscribed button, settings, view selector, move discussion selector etc) can all remain as is for now * Badges images being moved into a modal. For this issue they can just be rendered under the user image as they are in the other views * Emoji reactions * The top header part of the prototype with filters, grading, settings etc h4. Acceptance criteria * UI should match the prototype as closely as possible * All content for posts should be included when enabled, e.g. attachments, word counts, ratings etc * Accessibility should not be made worse, i.e. keyboard navigation, contrast ratios, screen reader labels etc",1 +"MDL-64887","02/18/2019 12:44:20","Update bootstrap to version 4.3.1","Update the Bootstrap JS and SASS to version 4.3.1",1 +"MDL-65016","03/08/2019 10:02:46","Many emails are sent if refreshing the OAuth2 token of a system account fails","In the context of OAuth2, if the token of a system account cannot be refreshed for some reason, all( ! ) administrators get an hourly( ! ) notification about this problem. There may be several reasons that can lead to this, including a) the refresh token has expired for some reason, b) authorisation has been revoked in the target system, c) the target system is not reachable (e.g., in maintenance). In either case, it is necessary to look into this. However, not every admin has to do this; in our case, most of them don't even know what this means... (By the way, the ""hourly"" part is fine. It's just that not everyone needs to be informed. The main administrator should be sufficient. For example, our main administrator's emails are managed by an issue tracker, which we use to assign tickets to the intended person. Others may use the main admin's email to forward the notification accordingly.) Expected behaviour: Only the main administrator gets emails informing about the failure.",1 +"MDL-65083","03/15/2019 06:37:37","Update uses of pull-xs-right","Due to updates to bootstrap - the pull-xs-right no longer has the ""float: right"" effect and places where this is used now look misaligned. fa-pull-right, pull-right and float-right do currently work on boost. float-right comes from the current version of bootstrap (theme specific) fa-pull-right is from font awesome (theme specific) pull-right is in the bootstrap 2 compatibility file and works on all themes. pull-right seems like the safest option since it has been supported for a long time in Moodle and we can updated it in a single place if it needs changing due to theme changes. ",3 +"MDL-65105","03/19/2019 09:12:39","Determine setup of dark navbar for Classic theme","The dark navbar has insufficient contrast (fails WCAG). There are a few different approaches we can take, depending how we want custom business colours to work, and the style defaults.",3 +"MDL-65151","03/22/2019 02:37:42","Final deprecation of section_edit_controls() in course/format/renderer.php","section_edit_controls() in course/format/renderer.php was deprecated in 3.0 (MDL-48947). It should be removed now. ",1 +"MDL-65205","03/28/2019 10:23:42","Messaging interface assumes secondary color is light shade","The messaging interface in Boost uses bg-secondary behind some text but assumes that it's a pale shade, since it puts hardcoded gray and dark gray text on top of it. The text colors should use color-yiq functions to ensure they are readable if the secondary color is set to something else.",3 +"MDL-65219","03/29/2019 12:37:09","Broken link in messages contact request notification","Hi, We notice a very small problem in contact request notification * User A send a contact request to user B * User B click on notifications icon , then on the link ""View full notification"" * At the bottom of the page, the link ""Go to"" is broken (file not found) message/classes/api.php : line 2511 : $url = new \moodle_url('/message/pendingcontactrequests.php'); but file ../message/pendingcontactrequests.php don't exist I saw in MDL-63310 : ""Don't forget to remove the stub page message/pendingcontactrequests.php"" Thanks a lot",3 +"MDL-65221","03/29/2019 13:42:06","Add behat test for new UI to manage messaging notification preferences","Feature In order to be notified of messages As a user I need to be able to update my messaging notification preferences Scenario Update notification preferences: Email",1 +"MDL-65298","04/08/2019 12:49:50","Remove titlestr and titlecomponent from replaceSectionActionItem and replaceActionItem methods in course/amd/src/actions.js","In MDL-64819 the titlestr and titlecomponent from replaceSectionActionItem and replaceActionItem methods in course/amd/src/actions.js are not used anymore. For now, a comment has been added to the replaceActionItem jsdoc, but some deprecation process should be raised for them to make sure the legacy code is cleaned at some point.",3 +"MDL-65453","05/01/2019 03:26:48","Admin CLI install script prompts for values that it doesn't use when the skip-database option is given","The {{admin/cli/install.php}} script still prompts the user for values such as the site short name, full name, admin email address, admin password even when it's run with the {{--skip-database}} flag. This is confusing for the user because those values are only set as part of the database install. This means that when {{--skip-database}} is set the values aren't actually saved anywhere even though the user provides them. Instead the user must set them again when running the {{admin/cli/install_database.php}} script or the admin can do it when the log into the site. The install script probably shouldn't prompt the user for those values if the {{--skip-database}} flag is given.",0 +"MDL-65546","05/09/2019 13:26:24","Name of sections or mods are not displayed correctly after some drag and drop in a course in pop-up dialog","Issue : discover during Moodle 3.7 QA test (MDLQA-13201). We notice the same bug in previous version of Moodle on Boost and clean theme. When we move mods or sections in a course using drag and drop, titles are not displayed correctly in the pop-up dialog. The problem persists even after refreshing the page : * If we drag and drop a mod, the title of the mod isn't displayed in the pop-up dialog (before and after we refresh page) * If we create a new section, name of the new section isn't always displayed in the pop-up dialog * If we drag and drop a section, order of sections in the pop-up dialog isn't update. ",5 +"MDL-65593","05/14/2019 04:35:43","Remove unused styles from mod/forum/styles.css","We've changed the forum structure a lot and relied more on the Bootstrap 4 classes which has left a lot of unused CSS in mod/forum/styles.css that can be deleted.",1 +"MDL-65620","05/15/2019 17:44:03","Default notification preferences are unset by default","Only Permitted/Locked/Disallowed values are kept when admins disabled a notification provider. All default values should be kept when a provider is disabled to recover them in case the provider is enabled again.",3 +"MDL-65668","05/21/2019 21:49:15","plugins which assign new capabilities cannot be upgraded/installed","During plugin installation, new capabilities (defined in db/access.php) are created only after db/install.php is run. As a consequence of https://tracker.moodle.org/browse/MDL-64971, if we call assign_capability() in the install script, the function will throw an error because the capability does not yet exist in the database. As a result, any plugin which assigns new capabilities in db/install.php or db/upgrade.php currently cannot be upgraded, and/or breaks the phpunit init script. Plugins known to be affected: [https://moodle.org/plugins/block_demostudent] [https://moodle.org/plugins/mod_adobeconnect] STEPS TO REPRODUCE: - Install vanilla Moodle 3.6.4 - Install the block_demostudent plugin [https://moodle.org/plugins/block_demostudent] - Run the phpunit init script, admin/tool/phpunit/cli/init.php EXPECTED (and working in Moodle 3.6.2 and 3.5.4): ++ Sucess ++ ACTUAL (as of Moodle 3.6.4 and 3.5.5): Default exception handler: Coding error detected, it must be fixed by a programmer: Capability 'block/demostudent:seedemostudentblock' was not found! This has to be fixed in code. Debug: Error code: codingerror * line 1351 of /lib/accesslib.php: coding_exception thrown * line 45 of /blocks/demostudent/db/install.php: call to assign_capability() * line 979 of /lib/upgradelib.php: call to xmldb_block_demostudent_install() * line 520 of /lib/upgradelib.php: call to upgrade_plugins_blocks() * line 1852 of /lib/upgradelib.php: call to upgrade_plugins() * line 491 of /lib/installlib.php: call to upgrade_noncore() * line 461 of /lib/phpunit/classes/util.php: call to install_cli_database() * line 150 of /admin/tool/phpunit/cli/util.php: call to phpunit_util::install_site() POSSIBLE SOLUTIONS In lib/upgradelib.php, update_capabilities() is typically called immediately after a component's xmldb_$component_install() function. We could create the capabilities before calling the install function. If this would not have any negative consequences, it seems like the cleanest solution. If there is a way to resolve this within the plugins, then let's update the plugin documentation to specify where in the code newly created capabilities should be assigned. Related: [https://moodle.org/mod/forum/discuss.php?d=384596] [https://github.com/iomad/iomad/issues/1116] [https://docs.moodle.org/dev/Upgrade_API#install.php] [https://docs.moodle.org/dev/NEWMODULE_Adding_capabilities] ",0 +"MDL-65724","05/27/2019 09:17:41","Import: Disabled general restore default values override import settings","Hi there, due to a support issue from one of our clients, we've encountered this issue. *Problem* Within the import dialogue you can decide for some aspects like activities, groups or blocks etc. to be included in the import or not. Unfortunately, even if a user enables, for example, the group and groupings option, the groups and groupings will not be included in the restore controller if the default restore setting _restore | restore\_general\_groups_ is disabled. *Steps to reproduce* We use the option for groups and groupings exemplarily. The behavior is identical for all import options. # Login as admin # Set the value *restore | restore_general_groups* to *No* # Create three Courses: ""Course 1"", ""Course 2"" and ""Course 3"" and enrol a teacher to those courses # Login as this teacher # Go to ""Course 1"" # Autocreate groups ""Group 1"" - ""Group 5"" and don't allocate any students to these groups # Make sure you have those Groups in your Course # Go to ""Course 2"" # Select the import from ""Course 1"" # Verify that the option _Include groups and groupings_ is checked # Perform the import and press _Continue_ # Go to your group page and verify that there are no Groups in ""Course 2"" and so no import of the groups was performed # To counter check, login as admin again and set the value *restore | restore_general_groups* to *Yes* # Login as the teacher and go to ""Course 3"" # Repeat the steps 9 - 11 # Go to your group page and verify that the 5 groups from ""Course 1"" are imported *Possible cause* The import function doesn't has any interactive UI to control the options for the restore process. In fact, they are not needed as the user declared his wish within the import UI. So Moodle should only use the created backup file and restore this independent from any default values. However, within the restore_controller.class the defaults will be applied: https://github.com/moodle/moodle/blob/master/backup/controller/restore_controller.class.php#L146 We think this is the same problem as it was reported and fixed with the recycle bin (MDL-63263, MDL-65218) and it's a regression from introducing the general restore default values (MDL-34859). *Intended behavior* First of all, Moodle should present all the settings that are selectable on the general restore default value page. Currently only a small subset is presented on the UI for the import. Then a backup should be created and without any changes due to default settings this backup file should be restored to the new course. Best, Kathrin",3 +"MDL-65741","05/29/2019 02:09:12","Replace PHPExcel with PHPSpreadsheet","https://github.com/PHPOffice/PhpSpreadsheet",3 +"MDL-65772","05/29/2019 04:25:56","Upgrade MongoDB PHP Library to 1.4.2","MongoDB PHP Library /cache/stores/mongodb/MongoDB/ 1.4 1.4.2 Yes https://github.com/mongodb/mongo-php-library/releases https://github.com/mongodb/mongo-php-library/compare/1.4.0...1.4.2",1 +"MDL-65835","06/04/2019 00:47:16","deprecate plagiarism_get_form_elements()","we should deprecate plagiarism_get_form_elements() and recommend the use of the coursemodule callbacks (added in 3.1) The ""replacement"" function would be to use plagiarism_get_form_elements - but by using callbacks plugin devs can also hook into the validation/edit_post_actions functions as well which wasn't possible using plagiarism_get_form_elements",5 +"MDL-65869","06/07/2019 13:33:43","Remove the @app tests from core","In order to add more @app tests for the core feature in a consistent way, it has been decided to have all them placed in a local plugin for app tests which just has app tests: [https://github.com/moodlehq/moodle-local_moodlemobileapp/] Although a few core feature behat @app tests were included in MDL-63977 (i.e. forum) to check the framework works, there was never any intent to provide behat tests for app functionality for core. The reason behind that decision is that the core functionality provided in the app (activities, course, navigation) is all native to the app; the 3rd party plugins are all written within the Moodle plugin and are just presented in the app. The forum one is a case in point. That test was written when the app was at 3.6.0 and it worked. It continued to work at 3.6.1 of the app and was also working last week after the release of Moodle 3.7.0. Since then the app has had a forum update which causes all existing forum behat to fail. That is not due to a failure in Forum, or the core Web Services, or the core Behat. It's due to a change in the App itself and the interactions that it presents. A contrib plugin has its own mobile code bundled with its own behat tests. Aside from major refactors of the mobile app, both the UI presentation, and the tests are fully under control of the developer. For core functionality, including core plugins like forum, the functionality in the app is provided natively by the app and not Moodle but we are adding tests for this functionality to Moodle. Whilst we can use the @app_upto3.6.1 it's still not going to help us in the long term because we have no way of identifying which tests are going to fail, up until they do fail, by which point we've already released. So instead of fixing the issues raised with app-3.7 in MDL-65832, we are going to close it and remove completely the @app tests from core.",1 +"MDL-65896","06/12/2019 04:48:19","Add emojis to messaging","Add emoji support to messaging as is common in most standard messaging services.",3 +"MDL-65918","06/13/2019 18:06:39","Error during first OAuth2 login for existing account (Call to undefined function auth_oauth2\profile_save_data())","When I set up an account with the ""oauth2"" auth type (using a custom OAuth2 issuer, in this case), the first time the user logs in with OAuth2 she will receive the following error: Exception - Call to undefined function auth_oauth2\profile_save_data() Stack trace: * line 354 of /auth/oauth2/classes/auth.php: Error thrown * line 536 of /auth/oauth2/classes/auth.php: call to auth_oauth2\auth->update_user() * line 49 of /auth/oauth2/login.php: call to auth_oauth2\auth->complete_login() The problem seems to have been introduced in this commit from December 2018, when the call to `profile_save_data()` was added without also requiring `user/profile/lib.php`: [https://github.com/moodle/moodle/commit/e2b812fc4028ebf40c4fbb1cdad293a825d84079#diff-53adc3a153341eaa9eb2d5e086e88519R354] A fix that worked for me was to simply add {code:java} require_once($CFG->dirroot.'/user/profile/lib.php'); {code} under the other require_once() statements at the top of *auth/oauth2/classes/auth.php*. Unfortunately I don't anticipate having the time to go through the process of becoming a new contributor and submitting code for peer review anytime soon. I hope this is a good enough start to get this fixed in a future release.",1 +"MDL-65928","06/14/2019 08:56:58","Create a toggle-all checkbox output component","h5. Who is this project for? * For Moodle devs!; and * Ultimately for Moodle users! h5. What is the problem that you're trying to solve? * [~dobedobedoh] created the awesome core/checkbox-toggleall AMD module. However, to be able to use it, you will have to do various stuff first (e.g. import the AMD module, manually edit the HTML/attributes of the elements to add the required data attributes, etc). * It currently doesn't have support for toggling the state of action elements (e.g. buttons that perform actions on the selected items. * It currently doesn't support toggling of nested checkbox elements (e.g. master checkbox toggles all checkboxes, while another master checkbox that toggles a subset of those checkboxes) h5. Why does it need solving? * It would help developers to easily use the checkbox_toggleall element! * We'll be able to provide a more consistent method of selecting/deselecting items on a list. h5. How does your project tackle the problem? * The patch for this issue provides an easier way for developers to output a toggle-all checkbox that can control a group of checkboxes on a list. Developers will simply have to implement the following: *# Define master checkbox(es) - responsible for toggling the checkboxes in the list. *# Define slave checkboxes *# (Optional) Assign appropriate data attributes to action elements. Action elements are those who perform actions on the selected items. * The improvements on the core/checkbox-toggleall will also ** enable support for toggling the state (enabled/disabled) of action elements. This will help us clean up the custom JS code for enabling/disabling the action elements scattered all throughout moodle. ** allow master checkboxes to belong to multiple toggle groups. In other words, this means that master checkboxes can control one or more groups of checkboxes. This is particularly helpful for selecting multiple items belonging to different groups. ",2 +"MDL-65933","06/17/2019 02:38:57","Use the checkbox-toggleall component for the database activity","h5. Who is this for? * Moodle users who can edit items in a database activity (e.g. teachers, course managers, etc) h5. What is the problem that you're trying to solve? * The inconsistent way of checking items on a list throughout Moodle h5. Why does it need solving? * A consistent way of checking items on a list would provide a better user experience h5. How does this issue tackle the problem? * The patch for this issue will implement the usage of the checkbox-toggleall output component which aims to improve the UI and UX by: ** having a single button for toggling the checked states of the checkbox elements in the items list. ** making the ""{{Delete}}"" selected button enabled only when there's at least one item selected.",1 +"MDL-65935","06/17/2019 05:00:53","Use the checkbox-toggleall component for the feedback activity","h5. Who is this for? * Moodle users who can manage a feedback activity (e.g. teachers, course managers, etc) h5. What is the problem that you're trying to solve? * The inconsistent way of checking items on a list throughout Moodle h5. Why does it need solving? * A consistent way of checking items on a list would provide a better user experience h5. How does this issue tackle the problem? * The patch for this issue will implement the usage of the checkbox-toggleall output component which aims to improve the UI and UX by having a master checkbox in the Select column that controls the checkboxes in the list of non-respondents instead of having two separate ""{{Select all}}"" and ""{{Deselect all}}"" buttons",1 +"MDL-65937","06/17/2019 07:30:36","Use the checkbox-toggleall component for the lesson activity","h5. Who is this for? * Moodle users who can manage lesson activities (e.g. teachers, course managers, etc) h5. What is the problem that you're trying to solve? * The inconsistent way of checking items on a list throughout Moodle h5. Why does it need solving? * A consistent way of checking items on a list would provide a better user experience h5. How does this issue tackle the problem? * The patch for this issue will implement the usage of the checkbox-toggleall output component which aims to improve the UI and UX by: ** having a master checkbox for toggling the checked states of the checkbox elements in the items list. ** making the ""{{With selected}}"" select box enabled only when there's at least one item selected.",1 +"MDL-65938","06/17/2019 09:16:36","Use the checkbox-toggleall component for the quiz activity","h5. Who is this for? * Moodle users who can manage quiz activities (e.g. teachers, course managers, etc) h5. What is the problem that you're trying to solve? * The inconsistent way of checking items on a list throughout Moodle h5. Why does it need solving? * A consistent way of checking items on a list would provide a better user experience h5. How does this issue tackle the problem? * The patch for this issue will implement the usage of the checkbox-toggleall output component which aims to improve the UI and UX by: ** having a master checkbox for toggling the checked states of the checkbox elements in the quiz items list when editing a quiz. ** making the action button ""{{Delete selected}}"" button enabled only when there's at least one item selected. ** having a master checkbox for toggling the checked states of the checkbox elements for the quiz attempts table. ** making the action buttons ""{{Regrade selected attempts}}"" and ""{{Delete selected attempts}}"" enabled only when there's at least one item selected. ",1 +"MDL-65946","06/18/2019 04:08:27","Use the checkbox-toggleall component for the SCORM package activity","h5. Who is this for? * Moodle users who can manage SCORM package activities (e.g. teachers, course managers, etc) h5. What is the problem that you're trying to solve? * The inconsistent way of checking items on a list throughout Moodle h5. Why does it need solving? * A consistent way of checking items on a list would provide a better user experience h5. How does this issue tackle the problem? * The patch for this issue will implement the usage of the checkbox-toggleall output component in the ""{{Reports}}"" page of the SCORM package activity. This aims to improve the UI and UX by: ** having a master checkbox for toggling the checked states of the checkbox elements in the attempts table of the ""{{Reports}}"" page. ** making the action button ""{{Delete selected attempts}}"" button enabled only when there's at least one item selected. ",1 +"MDL-65948","06/18/2019 04:59:52","Use the checkbox-toggleall component for the gradebook setup page","h5. Who is this for? * Moodle users who can manage the grade book (e.g. teachers, course managers, etc) h5. What is the problem that you're trying to solve? * The inconsistent way of checking items on a list throughout Moodle h5. Why does it need solving? * A consistent way of checking items on a list would provide a better user experience h5. How does this issue tackle the problem? * The patch for this issue will implement the usage of the checkbox-toggleall output component in the ""Gradebook setup"" page. This aims to improve the UI and UX by replacing the ""{{All / None}}"" links in the grade categories with master checkboxes for toggling the checked states of the grade items under the corresponding grade category. ",1 +"MDL-65949","06/18/2019 07:47:59","Use the checkbox-toggleall component for the course participation report","h5. Who is this for? * Moodle users who can manage a course (e.g. teachers, course managers, etc) h5. What is the problem that you're trying to solve? * The inconsistent way of checking items on a list throughout Moodle h5. Why does it need solving? * A consistent way of checking items on a list would provide a better user experience h5. How does this issue tackle the problem? * The patch for this issue will implement the usage of the checkbox-toggleall output component in the course participation report page. This aims to improve the UI and UX by replacing the ""{{Select all}}"" and ""{{Deselect all}}"" buttons in the grade categories with a master checkbox-toggleall checkbox for toggling the checked states of entries in the course participation report table.",1 +"MDL-65950","06/18/2019 08:10:04","Use the checkbox-toggleall component for the course participants page","h5. Who is this for? * Moodle users who can a manage course participants (e.g. teachers, course managers, etc) h5. What is the problem that you're trying to solve? * The inconsistent way of checking items on a list throughout Moodle h5. Why does it need solving? * A consistent way of checking items on a list would provide a better user experience h5. How does this issue tackle the problem? * The patch for this issue will implement the usage of the checkbox-toggleall output component in the course participants. This aims to improve the UI and UX by replacing the ""\{{Select all}}"" and ""\{{Deselect all}}"" buttons in the course participants page with a master toggle-all checkbox for toggling the checked states of checkboxes of the users in the course participation report table.",1 +"MDL-65994","06/21/2019 09:42:32","Use the checkbox-toggleall component for the question bank","As of Moodle 3.7, the question bank has started using the core/checkbox-toggleall AMD module. Though this is already great, using the checkbox-toggleall output component that's being developed in MDL-65928 would also be cool and hopefully, help tidy things up.",1 +"MDL-66034","06/28/2019 09:03:03","Log role changes in more detail ","The Danish Data Privacy Agency has due a privacy incident where a role misconfigured (which gave students access to too much data) expressed their criticism on Moodle. Currently Moodle only logs the following on a role change: !https://i.imgur.com/htRETGn.png! The Privacy Agency har criticized that it is not logged what the actual change in the role was, hence making it impossible to detect when the misconfiguration occurred. Furthermore this is logged in the normal moodle-log which automatically rolls over - I think standard is 90 days or so. We propose that role changes on system level are logged in the config-log and that the normal role-change is expanded. Furthermore role-overrides needs to be logged in more detail as well. ",1 +"MDL-66045","07/01/2019 07:20:38","Investigate: adding new course functions to calculate start date","Look into adding a function in course lib to calculate the course start date per user so that the activities can use it for their relative date calculations. Acceptance criteria * Returns the student's course start date calculated as follows ** If the student is enrolled before the course start then return the course start date ** otherwise return the students enrollment start date * Proof of concept function * Used by an activity * Identify any areas that need UX input",1 +"MDL-66046","07/01/2019 07:23:15","Investigate: identify places in Moodle that reference the course start date directly","We need to find all of the places in Moodle that are looking directly at the course start date and have a think about how we can update them to use the new function which calculates the start date for the user. Acceptance criteria * We have a list of all areas in Moodle that reference the course start date directly * Have a plan of how to modify them to use the new function (or what else we might need to implement) * Identify any areas that need UX input",3 +"MDL-66047","07/01/2019 07:28:48","Investigate: Proof of concept change assignment due date to relative date","Change the assignment due date to store a relative date and identify the areas that will be affected by that change. Acceptance criteria: * Identify UI areas affected * Identify automated tests affected (unit + behat) * Have a rough proof of concept code change to demonstrate it working * Look into how it works with overrides",3 +"MDL-66048","07/01/2019 07:31:58","Investigate: how assign relative due date change can be implemented in calendar","Look into what changes will be required in the calendar API to allow per user events so that they can work with the per user course start dates Acceptance criteria: * Rough proof of concept changes to work with relative date for assignment due date * Look into how that will work with calendar drag/drop of events (can it be disabled?) * Identify any areas that need UX input",3 +"MDL-66077","07/04/2019 03:31:33","Create basic template structure and JS wrapper","Create the basic template showing: * user pane * content pane * grading pane These should be in a location central to the Grading component, i.e. grade/templates Each pane should be rendered from its own template. Create JS to display the interface. The JS shoudl be in a location such as ""{{core_grade/unified_grader}}"" or similar and should have an instantiable object for the UI with functions to show, hide, etc. Configuration will probably need to include: * cmid Other configuration will be required in the future",0 +"MDL-66078","07/04/2019 04:24:50","Add WS and display to show all content for a user","Will be called by the user selector and paginator. Will take: # cmid # userid # groupid (optional) # page (optional) Possibly other options in the future.",2 +"MDL-66079","07/04/2019 05:43:45","Add configuration to show grading options in the Forum settings","Given I add a new forum And I press ""Edit settings"" Then I should be able to apply a rubric I believe we need to: # define the FEATURE # define a grading function ""{{forum_grading_areas_list}}"" There may be other things to do also. I think that we may want to consider having _multiple_ grading items. The gradebook supports having multiple grades for a single activity. We may want to consider having items for: * forum (grade for all posts in a forum) * discussion (aggregate of all graded discussions) * post (aggregate of all graded posts) * ratings I suspect we'll need to look at forum, and ratings initially and we may no need to do anything initially, but have to consider it now for a later point.",2 +"MDL-66080","07/04/2019 08:31:31","Paginate between users forum posts","When I have the unified grader interface open Then I should be able to select a user to grade",0 +"MDL-66110","07/09/2019 11:22:39","Error reading from database after upgrade to 3.7.1 (MySQL 8.0.2)","When trying to upgrade from version 3.3 to 3.7.1, we get an error: Default exception handler: Error reading from database Debug: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'groups g ON mc.itemid = g.id WHERE mc.compo' at line 3 SELECT mc.id FROM message_conversations mc LEFT JOIN groups g ON mc.itemid = g.id WHERE mc.component = ? AND mc.itemtype = ? AND g.id is NULL [array ( 0 => 'core_group', 1 => 'groups', )] Error code: dmlreadexception * line 486 of \lib\dml\moodle_database.php: dml_read_exception thrown * line 1245 of \lib\dml\mysqli_native_moodle_database.php: call to moodle_database->query_end() * line 2743 of \lib\db\upgrade.php: call to mysqli_native_moodle_database->get_records_sql() * line 1809 of \lib\upgradelib.php: call to xmldb_main_upgrade() * line 518 of \admin\index.php: call to upgrade_core() Probable reason in the keyword ""GROUPS"" - from version MySQL 8.0.2 this word is reserved and forbidden by standard SQL as column or table names ([https://dev.mysql.com/doc/refman/8.0/en/keywords.html])",2 +"MDL-66143","07/15/2019 02:37:56","As a teacher, I want to be able to create a course in relative dates mode, so that students can take the course any time","Add a new setting to the course to allow the teacher to choose between fixed dates or relative dates. Acceptance criteria: * An admin setting should be added to enable ""relative dates"" as an experimental feature * Relative date courses can not be created unless the experimental feature is enabled * A course can not be changed between relative or fixed dates once it has been created * A warning is visible when using the feature, telling them that they cant change the value once set (in the course edit form) Edit: Decision was made such that the experimental feature toggle will only affect new courses. Existing courses remain in their respective mode. This does not include backup and restore.",5 +"MDL-66144","07/15/2019 02:43:38","As a student in a weeks-format course, I want to be able to see the weekly dates displayed relative to my start date, so that I can plan my coursework","When a relative dates course is set to the ""weekly"" course format the dates for each section should be relative dates for the user. Acceptance criteria: * Dates should only be relative when the course is set to ""relative dates""",3 +"MDL-66147","07/15/2019 03:09:43","As a teacher, I want to be able to create an assignment activity with a 'due date' relative to the student course start date, so that the student can complete the full course","A teacher should be able to create an assignment activity with a relative due date. The due date should be relative to when the student begins the course. Acceptance criteria: * Due date is only relative when the activity is in a course set to relative dates * Student sees a relative date on submission page * Teacher sees the student's relative due date when grading * Teacher sees the student's relative due date when viewing submissions * Does not include handling overrides in this issue * Does not include handling extensions in this issue * Does not include showing calendar events for the student int his issue * Does not include access restrictions based on date. * Sort by due date/status in view all submissions table should be disabled * Web services should be updated",1 +"MDL-66148","07/15/2019 03:20:43","As a teacher, I want to be able to override the assignment due date for a student, so that I can adjust for their circumstances","A teacher should be able to override the assignment due date in a relative dates course for a student. Acceptance criteria: * The override should not affect any other students * The override date should appear on all grading/submission views for the teacher * The override table and form should show the relative date for that user * The 'reset to assignment defaults' button should reset due date to the current student's relative date.",1 +"MDL-66150","07/15/2019 03:28:14","Forum report: Discovery","Discovery and [specification document|https://docs.google.com/document/d/1JD2G3ZBewj4QkfhB70A7hOdHLgWca5TVNbNHaDtXktw/edit?usp=sharing] write-up for the forum summary reporting project. ",3 +"MDL-66153","07/15/2019 07:04:07","Forum report: Basic skeleton","Create a basic skeleton for the Forum report. # Create new forum subplugin for forumreport # Summary for single forum # No Download required initially # No filtering required initially # Basic fields: Names, Reply counts, Created discussion count",1 +"MDL-66184","07/18/2019 09:25:59","Bump moodle-behat-extension php requirements to 7.x","In MDL-50733 we updated moodle-behat-extension to newer behat version (3.5) and updated other requirements. This is a followup about to, also, raise the php required version to 7.0 (35_STABLE and 36_STABLE) and 7.1 (37_STABLE and master). Steps should be: 1) Create the PRs @ github. 2) Run tests @ CI agains them. 3) Merge the PRs and release the new versions. 4) Bump composer here to point to the new releases. Doc: https://docs.moodle.org/dev/Composer#How_to_prepare_and_submit_composer_changes",0 +"MDL-66226","07/24/2019 10:25:05","Show plain text in Messages summary pane","From discussion with [~michaelh]: {quote}I think the reason is that you wouldn't want things likeshowing massive text within the summary pane, though maybe it needs to just strip any HTML and show plaintext (maybe with the exception of an emote showing the actual icon) {quote} See following example: !HTML entities.png|thumbnail! Should be able to do this here: https://github.com/moodle/moodle/blob/master/message/amd/src/message_drawer_view_overview_section.js#L601 Acceptance Criteria: * Display either the text value, alt tag, title, element type (in that order of priority), falling back to a generic message (""Media content"") if we can't match the above.",1 +"MDL-66245","07/25/2019 12:56:00","GDPR data request export not usable when using special characters (invalid file paths)","This is a follow-up issue arising from the code change in the context of issue https://tracker.moodle.org/browse/MDL-64511. I confirmed the problem for current versions of Chrome, Firefox and Edge Dev Build on Windows 10. If you try to access the data.json files by clicking in the navigation bar of the index.html file, which has been exported by a data request, the corresponding data is not loaded. For example, the error message in Chrome is _""GET file:///[...]/export/Kernsystem%20_.1*%2F*data.js net::ERR_INVALID_URL""_. The problem is that the 'slash' in the data path is encoded as '*_%2F_'*. Obviously, for some combinations of browser and operating system, slashes must not be encoded. In Windows the error message also remains when you use XAMPP as local web server to serve the data export and try to access it via http. The usage of *encodeURIComponent* in *line 65* of the _js/general.js_ seems to be problematic. I have experimented with a possibility to restore slashes after the encoding with the replace function: {{E.g. newscript.src = encodeURIComponent(data).replace(/%2F/g, ""\/"");}} However, the only reasonable solution in my view is to avoid all special html symbols in the file names of the export and to use *encodeURI* instead of *encodeURIComponent* afterwards. As most users probably use Windows with Chrome or Firefox in my opinion this is an urgent problem.",0 +"MDL-66264","07/29/2019 01:58:50","Investigate integration with rocket chat","[Rocket chat|https://rocket.chat/] is an open source clone of Slack which offers a more fully featured chat experience than in-built Moodle messaging. While it's important to keep a messaging solution that ships with Moodle it might also be worth looking at the possibility of an integration with Rocket.chat for institutions that require a more feature full messaging experience (i.e. Workplaces).",1 +"MDL-66268","07/29/2019 07:14:50","Groups filter in forum summary report","Set up the filter area in the report interface, and add ability within that filter area to choose which group(s) within that forum are shown.",2 +"MDL-66292","07/31/2019 14:40:20","Exporter class is missing required related data error in forum discussions","As reported in [https://moodle.org/mod/forum/discuss.php?d=389064,|https://moodle.org/mod/forum/discuss.php?d=389064] after upgrading to Moodle 3.7, some forum discussion threads (or a forum activity of type single simple discussion) display an error message: {quote}Coding error detected, it must be fixed by a programmer: Exporter class is missing required related data: (mod_forum\local\exporters\post) author => mod_forum\local\entities\author {quote} Several forum discussion threads on moodle.org display the same error e.g. [https://moodle.org/mod/forum/discuss.php?d=65811] If you [search for the discussion subject|https://moodle.org/mod/forum/search.php?id=5&words=&phrase=Windows+server%3A+IIS6+and+PHP%2C+prompts+for+username+and+password], the forum post is listed in the search results with the content displayed correctly.",1 +"MDL-66293","07/31/2019 14:55:26","Pagination overflows modal window on add random question ","`Steps to recreate: # Make sure that you have a question bank where one of the categories has more than 100 questions. # Add a new quiz to the course # Add a random question to the quiz Result: The pagination expands beyond the popup . The GUI is even worse on mobile . Expected result: The gui looks nice . See screenshots below: !https://i.imgur.com/fhyGoC3.png! !image-2019-07-31-15-54-30-625.png!",0 +"MDL-66297","08/01/2019 01:52:48","Link forum summary report to export of each user's post content","Link the current row to the export of the content which generated that row",2 +"MDL-66299","08/01/2019 01:56:20","Add column to show the number of attachments that a user has added to the forum","Attachments column Showing the count of attachments in the posts which match the filter",1 +"MDL-66301","08/01/2019 01:57:53","Add ability to summarise all forums in a specific course","The forum summary report only shows the current forum. We should extend this so it is able to provide a summary report of all forums in a specific course. The scope of this issue is that (by default) teachers will be able to view the summary report for exactly one forum in a course (current functionality), or all forums in a course (that they have access to).",1 +"MDL-66322","08/05/2019 05:01:29","Use exttests repo in travis","Travis supports docker. We have an exttests Docker repo for our external HTTP tests We should combine the two! Start the exttests docker image when we run tests to reduce the random phpunit fails due to connectivity failures.",2 +"MDL-66358","08/11/2019 06:06:26","Display grading form in the grading panel","Display the grading form in within the grading panel for the current student/content h2. How it works in Assignment Assignment grading currently does: {code} - lib.php::mod_assign_output_fragment_gradingpanel() -- locallib::view() --- locallib::view_single_grading_panel ---- gradeform.php::mod_assign_grade_form::definition() ----- locallib::add_grade_form_elements() ------ mod/form/grading.php::toHtml() return $this->get_gradinginstance()->render_grading_element($PAGE, $this); {code} That comes from {{grade/grading/form/[type]/lib.php::render_grading_element()}} And that calls a renderer function to do loads of things. h2.Recommendations I don't think that we shuld use the fragments API to do this, at least initially. It doesn't fit in well with what we're doing here more generally. Therefore I think we need to update the existing grading options to support a new UI. We _may_ be able to replace the existing rendering with that, but we shouldn't do it in this issue. # Create new mustache templates in {{grade/grading/form/[type]/templates}} # Replace the existing JS with a new ES6/AMD module called from the template and using {{uniqid}} (should be trivial) # Create a new renderable for each of the advanced grading forms in {{/path/classes/output/grading_panel_renderable.php}} ## Implement an {{export_for_template(renderer_base $output)}} in there ## Constructor to take finalised values # Create an instance of the renderable in a new function in {{lib.php}}, or better still in a new class in {{grade/grading/form/[type]/classes/gradingpanel.php}} or similar. That function should return the instance of the renderable. # Create a new WS to call the new function/class method. That will then call {{export_for_template}}, then return the result. # When it comes to saving grades in the grading panel we call the named webservice for each grading form type: ## {{gradingform_rubric_save_grades_for_user_in_cmid($user, $cmid, $gradeoptions);}} or similar ### That should return the same values (along with a success/fail) # Create a generic grade one for simple direct grading # We also need to either: ## limit the list of advanced grading types in the modgrade form field where we choose them from; or ## ??? When setting up the JS we can do it similar to user selector, except that we have curried fns to: # fetch the name of the template to use during render # fetch the current data (curried which already provides cmid) and takes just user # save the data in the form right now (curried which already provides cmid) and takes user and data in form Theoretically it should be the Forum which provides the curried functions, but they're also kinda the property of the Grading API so we need to work out how best to do that longer term. h2. Scope Do not do eveything that the current stuff does. Don't handle all of the modes (especially edit). We should break out marking an editing anyway. Keep everything as basic as possible. h2. Configuration containing list of grading mechanisms: * Advanced type: ** Simple direct (not an advanced) *** Type (for Simple direct only) **** Scale **** Point ** Marking guide ** Rubric The Scale/Point are shown when using the other advanced types, but are not editable.",5 +"MDL-66362","08/11/2019 06:15:05","Add ""breadcrumb"" to top corner of grading window","Add the breadcrumb region to the grading window to help identify which activity is being graded.",2 +"MDL-66364","08/11/2019 06:17:17","Add parent post snippet","When grading a post which is a reply, show the first [n] characters of the previous post in order to give context to the discussion being graded.",3 +"MDL-66365","08/11/2019 06:18:17","Add a button to display the entire discussion for a post being graded","Contextual information is important. We should provide a mechanism to view the entire discussion for the content being graded.",3 +"MDL-66366","08/11/2019 07:19:16","Create a prototype site","Create a prototype site for this feature",1 +"MDL-66369","08/12/2019 04:08:37","Remove all instances of [modname]_scale_used","This should have been done in MDL-51883 for 3.6 but the deprecation was not fully done. These functions were only used by the deprecated function which was deprecated in 3.1, and removed in 3.6. They should have been removed at the same time.",1 +"MDL-66371","08/12/2019 05:31:44","Forum: add behat test covering forum export","Add appropriate behat + unit tests.",1 +"MDL-66372","08/12/2019 07:04:58","Implement summary report pagination size","Implement results per page on the forum summary report, to control how many results are returned during pagination. To start with, we should only accept 50 (default), 100, 200 as options, possibly fall back to the default if another value is specified, since it is not worth failing the request just for an invalid pagination value. Be aware that the summary report currently implements the null privacy provider, so unless you wish to set up the provider, in the first instance it is probably better to just keep the 50 default and not store a user preference for it.",2 +"MDL-66455","08/21/2019 04:18:36","Site level calendar subscriptions are not being listed in the Manage subscriptions page","To reproduce: # Log in as admin. # Go to the calendar # Press ""{{Manage subscriptions}}"" # Enter a calendar name. # For the ""{{Calendar URL}}"" field, enter the following URL of a public test Google calendar: https://calendar.google.com/calendar/ical/moodle.com_gverd91agb5htmi8ervnn6q2j0%40group.calendar.google.com/public/basic.ics # Under ""{{Type of event}}"", choose ""{{Site}}"" # Press ""{{Add}}"". # *Expected* #* The events are successfully imported as site events. #* The site-level subscription gets listed. # *Actual* #* The events are successfully imported as site events. #* The site-level subscription is not being listed. ",1 +"MDL-66477","08/23/2019 04:15:15","Create settings side drawer for new discussion view","Create a settings side drawer for the new forum view that contains all of the discussion header settings. The settings panel can contain a few sections such as: * General with toggles for ** subscription ** star ** pin ** locked * View which shows the view selector * Move which shows the move selector * Export to portfolio button (if enabled) The prototype here shows the side panel without any content: https://projects.invisionapp.com/d/main/?origin=v7#/console/18367584/381579786/preview ([old prototype|https://projects.invisionapp.com/share/9GQ8R2O3H7J#/screens/350489133]) See the ""settings"" part of the messaging drawer for an example of how it might look. h4. Implementation details * It would be good to create generic side drawer code/component which can be re-used between this and the messaging drawer h4. Acceptance criteria * Discussion heading options are all moved into a settings side drawer",1 +"MDL-66481","08/23/2019 04:40:56","Update display of discussion in discussion list table","Update the display of the discussion list table on the discussion list page (mod/forum/view.php) to match the prototype: https://projects.invisionapp.com/share/9GQ8R2O3H7J#/screens/350489135 h4. Acceptance criteria * Table can be sorted by the columns * Clicking on the unread replies label takes the user to the first unread reply on the discussion * ""Following"" in the prototype is actually ""Subscribed"" * The star toggle should be visible unless the discussion is pinned, in which case the pin will be displayed * Clicking the star toggle should star or unstar the discussion",1 +"MDL-66489","08/24/2019 07:00:00","Negative timestamp number for a Persian calendar in edit enrolment section","* I install the Persian calendar ([https://moodle.org/plugins/calendartype_jalali]) and change default calendar to (solar date) * I add a course and enroll a user to it * In courses > participants go to user ""edit enrolment"" section * Active enrolment starts or enrolment ends for the user and save * After saving data, in next time date show wrong for user enrolment start and end * In my test client-side js calculate wrong negative timestamp number and send to server-side and saves a negative number for a time in DB so Persian calendar shows the wrong date",0 +"MDL-66502","08/26/2019 21:26:59","Moodle 3.8 does not load javascript files from previous moodle versions","When calling an amd module on moodle 3.8 which was minified using a previous moodle version, the javascript doesn't get loaded and I get the following error in the console: {quote}Error: No define call for lifecyclestep_adminapprove/link-steps [http://requirejs.org/docs/errors.html#nodefine] {quote} To test it, you can use the 'Test plugin from previous version of Moodle' testing instruction from MDL-62497 . It seems not to be the fault of the block_counter, since javascript also didn't work in two other plugins when minified using a previous moodle version, but they all work when the javascript is minified using moodle38.",1 +"MDL-66503","08/27/2019 06:04:05","Scorm player is really narrow in new window on classic theme","With the Classic theme enabled: # Create a new scorm activity #* Under ""Appearance"" set ""Display package"" to ""New window"" # Click ""Save and display"" # Enter the scorm activity In boost, the player takes up the full width of the window, in classic it takes up less than half of it. To test, I used the scorm package available [here|http://www.centralquestion.com/Links/Samples.html] ",3 +"MDL-66594","09/04/2019 03:25:09","Add columns to show earliest and most recent post timestamps","Add two columns to the forum summary report, one for each user's earliest post, and one for their most recent.",1 +"MDL-66607","09/05/2019 08:03:35","Random messaging failure","Copied from MDL-65493. It looks like the {{getLoadNewMessagesCallback}} function's callback publishes the {{MessageDrawerEvents.CONVERSATION_NEW_LAST_MESSAGE}} along with the conversation Id of the now deleted conversation at around the time that the conversation I also deleted, and I suspect that this causes it to be re-added. This happens in the {{resetMessagePollTimer}} for the {{backOffTimer}}. Essentially the timer was running, and a conversation did exist, but it was deleted before the {{PubSub}} completes. The Publish of the new last message event occurs after the conversation has been deleted, and as a result it gets re-created. I'm not sure how best to fix this one. A few things spring to mind, but they may not be ideal... # stop timers, and cancel any ongoing requests while dialogues are open or not on the relevant screen # ?? Not really sure as I don't know enough about the messaging code. Basically, this is a real race condition. We've not detected it before because of the other issues (which are largely fixed in this MDL). ",2 +"MDL-66625","09/09/2019 01:15:04","Private replies should be included in the forum summary report","We currently blanket ignore private replies. We will need to consider them at some point",2 +"MDL-66627","09/09/2019 02:56:09","Add behat tests to forum summary report skeleton","Add behat testing to the forum summary report basic functionality, including: # Unable to navigate to the report as a student. # Able to navigate to the report as as a student who has only the view permission, and only able to see own row. # Able to navigate to the report as a teacher. # Able to view correct columns and data as a teacher.",2 +"MDL-66665","09/12/2019 12:49:33","Reopened assignment shown as graded by student themselves","*Graded by* shows the student who has been graded, when an assignment has been re-opened To replicate: # Create an assignment # Grade a student and *Allow another attempt* # Login as the student # Verify that the students name and picture show under Feedback, Graded by",3 +"MDL-66695","09/17/2019 04:18:33","Add column to show post view count, if information is available","Add a column to the forum summary report to show ""Number of views"", the number of posts each user has viewed. This will probably require checking log entries to determine a user's read count, which would mean the column should only be shown if the site is using an internal log store. An example of similar log checking and data calculation can be seen in [this report|https://github.com/moodle/moodle/blob/master/report/log/locallib.php#L116-L146].",3 +"MDL-66707","09/17/2019 15:00:45","Forum too eager to mark messages as read (threaded view)","Having set forum view mode to ""Display replies in threaded form"", forum replies are displayed as nested links that must be followed to view the replies. In M3.5 (and I guess probably M3.6), the replies would not be marked as read until clicked and viewed. In M3.7, the replies would are marked as read when the thread is loaded - without having viewed them. It seems clear that not changing the read status until actually read is the correct behaviour, and this change/regression is a loss of functionality for some of my users.",0 +"MDL-66725","09/19/2019 11:28:57","JS loaded strings don't match Moodle language setting","If an string is loaded using JS it will match the browser lang and not the current Moodle language. It may be a regression of MDL-62497 *Adding a block steps* # Setup your browser to use a language different than English. ie Spanish. (May need a browser restart). # Install this language on you Moodle site. Leave the default language on English. # Try to add any block. # Block selector will show the strings in the browser language rather than English. (((the calendar steps))) *Enrol user steps* # Setup your browser to use a language different than English. ie Spanish. (May need a browser restart). # Install this language on you Moodle site. Leave the default language on English. # In a course, go to Participants # Click the ""Enrol users"" (translated) button # Some elements of the enrol user overlay show the strings in the browser language rather than English.",1 +"MDL-66748","09/23/2019 03:52:00","Create data generator for core grading + rubric","We need to create marking guides and rubrics for some tests in other issues. These partially already exist, but can be made more available to other things. This is a high priority issue for us.",0 +"MDL-66768","09/25/2019 08:23:27","Add the ability to download the forum summary report","Add the ability to download a copy of the current forum summary report. The report utilises Table SQL, so most of the functionality needed should already be provided by that.",2 +"MDL-66808","10/01/2019 04:22:47","Forum export options for human-readable dates and removing HTML","We need options to: # export raw HTML or pass it through html2text # have dates as ""Human-readable"" ",1 +"MDL-66810","10/01/2019 07:29:50","Allow microphone and camera to be accessed from content iframe ","Browser restrictions on iframe content prevent the device camera and microphone from being accessed, unless explicitly allowed via the allow attribute on the iframe. Moodle's own RecordRTC icons on the Atto and TinyMCE toolbars will currently not work if shared within an external tool iframe. There are also 3rd party apps such as VoiceThread and Poodll recording which will not work if embedded using Moodle's external tool currently. This is also related to https://tracker.moodle.org/browse/MDL-65613 which requests the addition of ""autoplay"" to the allow attributes. The chrome browser family added these restrictions last year (2018) and his document explains it a little. https://dev.chromium.org/Home/chromium-security/deprecating-permissions-in-cross-origin-iframes It might be prudent to also add ""geolocation"" and possibly ""midi"" to the allow list since these are likely to also be required at some point. It should be noted that allowing these items will still not enable them. The user's explicit permission will be requested before access to camera, microphone or geolocation is granted . Following the item being allowed, a URL can be specified to restrict permission to that origin. If omitted the allowed origin is that of the URL in the src attribute. In the case of the mod_lti the src attribute contains a local Moodle url. Since we do not know the true origin (easily) typically a wildcard is used. So the resulting attribute looks like this: allow=""microphone *; camera *; geolocation *"" ",0 +"MDL-67165","11/07/2019 08:51:53","Improve the user grade display modal","Once we get the core functionality of displaying user grades into core we should have UX run through it and provide us with some designs.",5 +"MDL-67179","11/08/2019 05:02:40","Add missing svg and png backups for i/grading icon","I added a new icon for grading in MDL-66893 but forgot to add the SVG and PNG backups (whoops!) so we need to add those.",1 +"MDL-67233","11/13/2019 05:26:48","Choices with only open dates in the future do not appear on timeline","If you have a choice with only an open date in the future, this does not then appear in the timeline block The issue is with the event_list.js:270 which filters out the 'Choice open' event being sent down regardless of whether it's in the future or not",1 +"MDL-67262","11/14/2019 22:57:30","Add admin page for recommending activities","Related user stories: ||User stories||Approaches|| |As an admin, I can set recommended elements to users(teachers/managers)|Site Admin setting page with the list of all activities. Any activity that is present on the page should have the ability to be recommended.| h3.Acceptance criteria * A settings page in Site administration menu should be available which allows the administrator to select any activity as recommended. Barbara to confirm where to place this in the admin tree. * The administrator can also remove the recommendation for activities from the activity chooser from the settings page. * H5P installation of activities to be dealt with in a different issue. * behat tests for recommending activities on the admin page. * Unit tests for any functions methods created through this issue. * Use the favourites API to store this information.",3 +"MDL-67263","11/14/2019 23:09:14","Ability to search in the activity chooser","||User Stories||Approach|| |As a teacher I should be able to search for elements in the modal based on title and information| | |As a teacher, i should be to see searched elements grouped by tabs| | |As a teacher I should be able to go back to the default view of the modal once I finish searching|Either by removing search or pressing back button| |As a teacher when I perform a search I should be able to see what triggered the result|Have this behave like the H5P search. Results are shown, but no context (if the search result is in the more info section).| |As a teacher, after i perform a search, I should be able to navigate between the information and search results seamlessly|When viewing details of an activity, after clicking back, the search should still be active.| h3.Acceptance criteria * A search bar should be located at the top of the activity chooser when it is opened. * Typing anything into the search bar should immediately start showing results (no need to click a search button). * The search should search both the name, and the information to show a result. * Search results should remove the tabs previously shown and show the results on the one page. Results should be categorised i.e. Starred, Recommended, Activities, H5P. * There must be a way to quickly get back to the default state. Clearing the search box being one way. A back button being another. Please implement both. * If there are no search results then a message should be displayed saying as much. * The search results should remain intact while viewing information on an activity, or starring an activity. * Behat tests must cover the above features.",3 +"MDL-67264","11/14/2019 23:47:51","Rework/Redesign the activity chooser","Redesign/restructure the activity chooser to fit the [current design mock-ups|https://projects.invisionapp.com/d/main?origin=v7#/console/17898774/393374947/preview?scrollOffset=0] User stories ||Story||Approach|| |As a teacher, when I click on the activity choose link(the link), I then see the activity picker(the modal), I can then see the activities/resources(the elements) in a grid format and I should not see any tabs(the tabs) in the modal.| | |As a teacher when there are lots of elements in the modal, I can scroll down in the modal to view them.|Allow scrolling| |As a teacher I can find out more information about the elements in the modal.|Click the 'i' icon and be taken to another page with more information.| |As a teacher I should be able to add an element once I have read the detailed information.|A button to add the activity should be present on this page.| |As a teacher I can select and configure an activity.|Click the activity icon and jumps immediately to the activity settings page| h3. Acceptance criteria * All visible activities are listed in the modal. * Activities are to be displayed in a grid as per the prototype. * Third party activities are listed in the modal when installed (and visible). * When there are more activities than will fit in the modal, scrolling down will display them. * Clicking on the 'i' (information) icon shows the information about the module. ** Clicking the i results in a page sliding in from the right to show the information (The same as the activity chooser in H5P). ** A button to add the activity should be available from the information page. * A single click of an activity icon will redirect to the mod_edit page for configuration. * Activities can show additional items in the activity chooser. * Adding activities works using Jaws and NVDA. ** Keyboard navigation is possible. * Current behat tests should still work. * Behat tests are created to cover new functionality (showing information, adding activities from the information page) * If new methods / functions are added they are covered by unit tests. ",3 +"MDL-67286","11/18/2019 03:11:21","Create unit tests for the base activity chooser - Sub task of MDL-67264","Create unit tests to cover the functionality of the new code for the base level activity chooser.",1 +"MDL-67287","11/18/2019 03:12:28","Create behat tests for the base activity chooser - Sub task of MDL-67264","Create behat tests to cover all features of the activity chooser. Acceptance criteria: * Existing tests passing * New sliding functionality covered (to description, back from it, adding a new mod from description)",5 +"MDL-67288","11/18/2019 03:17:41","Accessibility implementation & audit of activity chooser - Sub task of MDL-67264","Review the new Activity picker and make sure that it works with: * JAWS * NVDA Acceptance criteria: * Focus lock * Tabbing from inside a grid item goes to exit once done rather than the next or previous ",5 +"MDL-67290","11/18/2019 03:49:42","Define the API allowing course mod plugins to add multiple activities to the activity chooser","It is currently possible to add additional / pre-configured activities to the activity chooser such as external services. We need to retain this ability. * We need to finalise our implementation details * Ensure backwards compatibility * Unit tests must be included User story ||Story||Approach|| |As an admin, I can configure my LTI/H5P tools to be available on the modal| | h3. Acceptance criteria * Mod activities can add one or more items to the activity chooser by implementing the new API * Backward compatibility must be maintained. ** If we create a new way of adding new items to the activity chooser then we must deprecate the old method. *** Unit tests must be included with any new functions / methods.",0 +"MDL-67291","11/18/2019 05:06:55","Create backend code to retrieve activities - Sub task of MDL-67264","Create backend code to query all installed activities, checking for visibility, and returning a list / object / whatever of activities to display in the activity chooser. *Note* There should already be code existing for the current activity picker. Investigate that code. It's likely that we won't need to initially touch it and just update the frontend. Current code for retrieving activities is in course/renderer.php - course_section_add_cm_control() *Note 2* course/lib.php get_module_metadata() does a component callback for 'get_shortcuts' which is what adds more activities to the activity chooser. *24/11/19* It has been decided today to retool this MDL to test out the performance of webservice call to fetch the course modules and move away using the json_encode method.",3 +"MDL-67321","11/21/2019 02:58:28","Support categories/tabs in the activity chooser","This issue relies on the list of activities (and their associated metadata) provided by changes in MDL-67290. This issue is scoped with: # Translating the list of activities, via display logic, into a template context for the activity chooser template -- Context should provide tabs/categories each of which contain activities. For now, hard limited to just 'Activities' -- Context should indicate which cat/tab is the focus (initially, just the 'activities' tab but this will change once favourites and recommendations tabs are added in the respective issues) # Updating the template code to render the tabs provided by the context, including selection of the in focus tab.",3 +"MDL-67364","11/26/2019 05:48:01","TinyMCE editor font sizes are too small in Classic theme (and other child themes)","Currently, for child themes to have editor SCSS styles included (eg Boost includes Bootstrap), they must have them configured, and include their own SCSS file. The result is that themes such as Classic use TinyMCE's default fonts, which do not reflect what is displayed on the page once the input is saved, and in some cases are small enough to be difficult to read. This appears to be something I did not factor in as part of MDL-62968. I think rather than requiring copy/pasting of content into every theme, child themes should only need to include editor SCSS if they wish to override the parent theme, otherwise they should default to the value being used by the parent (this should also stop this problem arising again, as it has in the past with clean/bootstrapbase MDL-39424 and Boost MDL-60588). Example (using TinyMCE's default in Classic): !MDL-67364-TinyMCE_headings_before.png|thumbnail!",0 +"MDL-67371","11/26/2019 19:48:11","Upgrade ADODB to latest version","AdoDB (/lib/adodb/) 5.20.14 --> 5.20.15: http://adodb.sourceforge.net/",1 +"MDL-67372","11/26/2019 19:50:50","Upgrade HTML Purifier to latest version","HTML Purifier (/lib/htmlpurifier/) 4.10.0 --> 4.12.0: [http://htmlpurifier.org/] ",1 +"MDL-67373","11/26/2019 19:53:48","Upgrade PHPMailer to latest version","PHPMailer (/lib/phpmailer/) 6.0.7 --> 6.1.3: [https://github.com/PHPMailer/PHPMailer/releases] ",1 +"MDL-67374","11/26/2019 19:56:00","Upgrade SimplePie to latest version","SimplePie (/lib/simplepie/) 1.5.2 --> 1.5.3: [https://github.com/simplepie/simplepie/releases] ",1 +"MDL-67376","11/26/2019 19:59:38","Upgrade loglevel.js to latest version","loglevel.js (/lib/amd/src/loglevel.js) 1.6.2 --> 1.6.6: [https://github.com/pimterry/loglevel] ",1 +"MDL-67378","11/26/2019 20:03:00","Upgrade mustache.js to latest version","Mustache.js (/lib/amd/src/mustache.js) 3.0.1 --> 3.1.0: [https://github.com/janl/mustache.js/releases] ",1 +"MDL-67379","11/26/2019 20:04:58","Upgrade SCSSPHP to latest version","scssphp (/lib/scssphp) 1.0.2 --> 1.0.6: [https://github.com/scssphp/scssphp] ",1 +"MDL-67383","11/26/2019 20:15:47","Upgrade VideoJS to latest version","* VideoJS (/media/player/videojs/amd/src/video-lazy.js) 7.6.5 --> 7.7.6: [https://github.com/videojs/video.js/releases] * VideoJS (/media/player/videojs/amd/src/video-lazy.js) 7.6.5 --> 7.7.6: [https://github.com/videojs/video.js/releases] * VideoJS support files (/media/player/videojs/videojs/) 7.6.5 --> 7.7.6: [https://github.com/videojs/video.js/releases] * The Flash tech for video.js (/media/player/videojs/amd/src/videojs-flash-lazy.js) 2.2.0 --> 2.2.1: [https://github.com/videojs/videojs-flash] * Custom Flash Player for VideoJS (/media/player/videojs/video-js.swf) 5.4.1 --> 5.4.2: [https://github.com/videojs/video-js-swf/releases] ",1 +"MDL-67384","11/26/2019 20:17:44","Upgrade jQuery EU Cookie Law popups to latest version","jQuery EU Cookie Law popups (/admin/tool/policy/amd/src/jquery-eu-cookie-law-popup.js) 1.1.2 --> 1.1.3: [https://github.com/wimagguc/jquery-eu-cookie-law-popup/releases] ",1 +"MDL-67385","11/26/2019 20:19:54","Upgrade MongoDB PHP Library to latest version","MongoDB PHP Library (/cache/stores/mongodb/MongoDB/) 1.4.2 --> 1.5.1: [https://github.com/mongodb/mongo-php-library/releases] *Note: This upgrade, upgrades the mongodb extension requirement to 1.6.0*",1 +"MDL-67388","11/26/2019 20:25:34","Upgrade babel-polyfill to latest version","babel-polyfill (/lib/babel-polyfill) 6.26.0 --> 7.7.0: [https://babeljs.io/docs/en/babel-polyfill.html] ",2 +"MDL-67392","11/27/2019 09:27:40","Forum information about timed discussion doesn't handle correctly ""displaystartdate"" and ""displayenddate"" containing quotes","MDL-66481 introduced showing a ""Timed"" label next to timed discussions. But if ""displaystartdate"" or ""displayenddate"" contains quote (it's the case at least for french), the ""Timed"" label is broken. You can look at the discussion [https://moodle.org/mod/forum/discuss.php?d=393804] for details. To replicate : # create in a forum a timed discussion (tick display start and end dates) # verify that forum list of discussions well shows the ""Timed"" label # make a language customisation of ""Forum"" component, and modify ""displaystartdate"" with ""It's display start: \{$a}."" and ""displayenddate"" to ""It's display end: \{$a}."" and save modifications # verify again forum list of discussions. It should still well show the ""Timed"" label, but it's not the case ",1 +"MDL-67476","12/09/2019 00:48:42","Migrate new JavaScript code from AMD to be ES6 - Sub task of MDL-67264","Update the new AMD sections to be using ES6. We agreed that from this point onward we should write any new JavaScript in ES6.",0 +"MDL-67477","12/09/2019 05:16:16","CLONE - Remove old class renames","core_component looks for COMPONENT/db/renamedclasses.php files, it allows us to avoid traumatic transitions and BC breakages by listing classes that have been removed. We need to clean the list at some point.",3 +"MDL-67498","12/11/2019 12:04:33","Remove deprecated enrolment popup","The old enrolment popup was replaced in MDL-59365. Files associated with the old UI should be removed. ",3 +"MDL-67533","12/17/2019 08:57:40","""Re"" duplicated in subject line (again)","This issue that was fixed in MDL-65675 seems to have resurfaced again... This seems to happen in the experimental nested view.",2 +"MDL-67584","12/27/2019 03:23:22","Front end implementation of indicating favourites with a star","Implement the front end of favouriting for the activity chooser. h3. User stories ||Story||Approach|| |As a teacher, I should be able to star an element (applies to any elements in the modal)|When I click on the star, the star turns blue but does not disappear from the list. The element then appears on the starred page| |As a teacher, I should be able to see only my starred elements| | |As a teacher I should be able to unstar an element and it disappears from my list of starred activities.| | h3. Acceptance criteria * Each individual can star any activity listed in the activity chooser. * Any item starred is displayed in the starred / favourites tab. * Starred items remain in the current tab, as well as being added to the starred tab. * Starring should be live. Clicking the star tab should show just starred activities. * Activities in the favourite tab can be removed by clicking on the star. This can be done from the starred tab or any other location that the activity is shown. * Behat tests must cover this functionality.",3 +"MDL-67585","12/27/2019 03:24:42","New API for extending the activity chooser and implementation of favouriting","Backend implementation of favouriting for the activity chooser. Add unit tests to prove that this is working as intended. Add favourites to webservice displaying the chooser Add webservice for adding a favourite. Add webservice for removing a favourite.",3 +"MDL-67586","12/27/2019 05:33:21","Update activity chooser to include recommended activities (Frontend)","Add templates / JS (ES6) to the activity chooser to display recommended activities. Related user stories: ||User stories||Approaches|| |As a teacher, I can see a list of recommended elements in the modal|Recommended activities are displayed in the appropriate tab.| * If there are no activities selected to be recommended, then the recommended tab is not shown. * If there is no favourites tab being shown then the recommended tab should be shown. If there are no recommendations then the activity tab should be shown on display. * Behat tests to cover the features mentioned above. * Includes webservice call /modification. * Also requires updated to webservice unit test.",3 +"MDL-67587","12/27/2019 05:42:56","Add searching of the recommended activities admin page","Add the ability to search through all of the activities on the recommended activities admin page to narrow it down to a reasonable number, we will have thousands of entries on this page.",1 +"MDL-67594","12/31/2019 06:10:04","Deprecate supports_recursion() & extend_lock() in the Lock API","If a lock type supports_recursion() then the locks behave very differently to when they don't. Yet despite this not a single place in core actually calls for supports_recursion(), and if it did then it would have to do a code fork to work around the different behaviors. This feels like an architectural mistake in the design of the lock api, all lock implementations should behave identically so that calling code doesn't need to worry about things like this. Given that the only place that leverages this is the unit tests, it is clear no one wants or needs it or is using this. I've had a bit of a quick search on github and in the wild for 3rd party uses and couldn't find any. It's also trivial to workaround in the lock types that do support recursion to bring their behavior back in line to the locks which don't, as they already internally store a list of open locks for the current request and could just reject the second lock attempt.",3 +"MDL-67620","01/06/2020 02:42:45","Course with LTI components throws error","If you have LTI components defined in the course, the course_module_chooser_exporter throws a 'Exception - Call to a member function out() on string' error when the editing is enabled. ",1 +"MDL-67663","01/10/2020 17:11:01","Forum grading submit grade form does not conform to accessibility guidelines","* Navigate to the ""Grade Users"" UI for a forum post * Input a grade in the ""Grade"" field * Navigate back to the ""Next"" link and click * A screen reader perceivable message ""Grade saved for ..."" is presented. The accessibility and usability issues here can be parsed in a few ways: * That the ""Next"" element is marked up as a link doesn't conform to [WCAG 2.1 4.1.2|https://www.w3.org/WAI/WCAG21/Understanding/name-role-value] because, when data is present, it functions as a submit button. Users do not typically expect clicking a link to submit data. (There is arguably no 4.1.2 issue if there is no data in the ""Grade"" field, because it is functioning as a link.) * You could view the same issue as a [WCAG 2.1 1.3.1|https://www.w3.org/WAI/WCAG21/Understanding/info-and-relationships] nonconformance, since the relationship between the navigation and the form is not clear, and submitting data by not clicking a link is not semantics. (WCAG 1.3.1 generally hopes for valid semantics.) * Since there are no instructions indicating that the way to submit the data is by clicking the link, the interaction does not really conform with the spirit of [WCAG 2.1 3.3.2|https://www.w3.org/WAI/WCAG21/Understanding/labels-or-instructions], which expects helpful instructions for forms. * While the grade submitted status message is perceivable by screen readers, the is no indication that the student presented has updated (that the link has taken the user to a new student.) The new student's name and the ""X out of Y"" change in context are not updated. so this does't conform to [WCAG 2.1 4.1.3|https://www.w3.org/WAI/WCAG21/Understanding/status-messages]. To demonstrate this, click the ""Next"" button without data entered into the grade field. No status message is presented to the user even though the student displayed has been updated. * Though not a strict accessibility nonconformance but a usability concern: when clicking the ""Next"" or ""Previous"" button, focus remains on the link, which may suggest to a screen reader user that nothing has changed when clicking it, especially when there is no status message. Moving focus to, say, the users name may help indicate to the user that clicking a link has in fact navigated to a new resource. * Typically, in forms, submit buttons occur at the end of the form. Since the ""Next / Previous"" buttons appear at the top of the form, and no explicit submit button is present, and no instructions are present, a user may be confused how to submit the form information. It can also be cumbersome to navigate to the end of the form to submit data, and then navigate back through the form to find the submit button. I'm not sure whether these would be usability issues without testing with users with disabilities, and if they have said they have no issue with the UI, that's great. But if usability testing hasn't done, the overall interaction might be a candidate for testing and redesign. In the mean time, adding instructions that clicking the Next button will submit data, if any data is present, and providing status updates that the UI has navigated to a new student, would present immediate accessibility improvements.",1 +"MDL-67675","01/13/2020 12:31:34","Cannot cut and paste if H5P button is added to the Atto toolbar","As reported [https://moodle.org/mod/forum/discuss.php?d=393952] the Atto Editor in Moodle 3.8 does not support cutting. To reproduce: * open up the Atto editor in any activity * type some text * select some of this text * hit Ctrl and X to cut * Further down the page attempt to paste this text What should happen: * Text is pasted What does happen: * Nothing",0 +"MDL-67721","01/16/2020 23:30:50","No 'View grade' button for single simple discussion forum","A participant highlighted this in the Learn Moodle 3.8 Basics MOOC. When grading with a single simple discussion forum, there is no 'View grade' button. I tested this on the Sandbox site and found the same. The student can see their grade in the gradebook, just not from a button in the forum. So I then downloaded and restored the test course from MDL-66906 and discovered that all the forums offered for testing were of the 'standard discussion' type. Was it a deliberate decision not to test or add the View grades button to other forum types or was it an oversight?",0 +"MDL-67730","01/20/2020 05:23:25","Upgrade ADODB to a more later version (v5.20.16)","We just upgraded to ADOBDB v5.20.15, but v5.20.16 has just been released early this year. -The latest version also fixes the ADODB's [PostgreSQL12 compatibility|https://github.com/ADOdb/ADOdb/commit/a4876f100602c2ce4760bb72d3050f73387adcca].- Just realised that the fix for PostgreSQL 12 compatibility has already been fixed in v5.20.15. :P",1 +"MDL-67812","01/25/2020 09:42:40","Create a new repository for the content bank","*As a teacher* *I want* to select from the file picker the H5P content created in the Content bank *So that* I can reuse it easily everywhere (activities, resources...). h3. Acceptance criteria: * Create a new repository for users to be able to select and reuse content uploaded/created in the Content bank. * Show the content in the content bank inside the file picker. * Select content from this repository and attach it everywhere where the file picker is displayed. h3. List of tasks: * Create new repository_contentbank plugin skeleton * Adapt or create DB tables as needed * Create capabilities * Implement the Privacy API or implement a null privacy provider and create a new issue * Create a view for the content bank to be shown inside the repository_contentbank",3 +"MDL-67813","01/25/2020 09:57:52","Implement search functionality for the repository_contentbank","*As a teacher* *I want* to be able to search in the content bank repository by content's name *So that* I can find the content I need to select in the file picker h3. Acceptance criteria: * Be able to search content by name in the content bank repository * Reset search criteria to see all content in the content bank repository h3. List of tasks: * Implement needed methods or functions to search in the content bank repository. * Design and implement search results view. * Reset the search criteria in order to go back to 'see all' view.",3 +"MDL-67845","01/31/2020 09:53:13","Deprecate 'enrol_database_admin_setting_category' class","Working on MDL-67278 we realize 'enrol_database_admin_setting_category' class could be deprecated and 'admin_settings_coursecat_select' used instead. ",1 +"MDL-67846","01/31/2020 15:27:35","Add name of user to fields included in forum exports","When exporting a forum (discussions) to a CSV, Excel etc, it only includes the user ID field which is of little/no use to teachers/instructors. It would be great to include the user's names etc.",0 +"MDL-67862","02/04/2020 07:46:32","Empty h3 tag in message deletion dialogue","From the audit results: h5. Issue Empty headings There is an empty H3 present in the ""Chat"" area. Fig. 0.01 h5. Impact on users Screen reader users can call up a list of headings. Empty headings can cause confusion. h5. Guidelines affected * 1.3.1 Info and Relationships (AA) ** Information, structure, and relationships conveyed through presentation can be programmatically determined or are available in text. * 4.1.2 Name, Role, Value (A) ** For all user interface components (including but not limited to: form elements, links and components generated by scripts), the name and role can be programmatically determined; states, properties, and values that can be set by the user can be programmatically set; and notification of changes to these items is available to user agents, including assistive technologies. h5. Recommendation Delete the empty headings",0 +"MDL-67865","02/04/2020 13:29:51","Broken ARIA reference in the user menu","h5. Issue Broken ARIA references An aria-labelledby or aria-describedby reference exists in the User drop down, but the target for the reference does not exist. Fig. 0.03 h5. Impact on users ARIA labels and descriptions will not be presented if the element referenced does not exist in the page h5. Guidelines affected * 1.3.1 Info and Relationships (A) ** Information, structure, and relationships conveyed through presentation can be programmatically determined or are available in text. * 4.1.2 Name, Role, Value (A) ** For all user interface components (including but not limited to: form elements, links and components generated by scripts), the name and role can be programmatically determined; states, properties, and values that can be set by the user can be programmatically set; and notification of changes to these items is available to user agents, including assistive technologies. h5. Recommendation Ensure the element referenced in the aria-labelledby or aria-describedby attribute value is present within the page and presents a proper label or description. h4. More info From axe tool. h5. Issue description Ensures all ARIA attributes have valid values h5. Element location {noformat}#action-menu-1-menu{noformat} h5. Element source {noformat}
{noformat} To solve this violation, you need to: Fix the following: {noformat} Invalid ARIA attribute value: aria-labelledby=""action-menu-toggle-1"" {noformat}",0 +"MDL-67884","02/06/2020 00:54:16","Add links to MoodleNet in Moodle (master)","The desire is to guide users to MoodleNet via the activity chooser. The following users stories outline the areas to introduce these links. ||User story||Approach|| |As a teacher (in Moodle) I can navigate to MoodleNet from the Activity Chooser, so I can find content for my course|See UX designs - there is a link in the footer, as well as another carousel pane, depending on whether the user has added a MoodleNet account on their profile or not.| |-As a teacher (in Moodle) I can navigate to MoodleNet from an empty course page, so I can find content for my course-|-On a blank course page I am presented with:- -Description of what I can find on MoodleNet, and that I will be directed out of the Moodle site- -A link to MoodleNet-| |-As a teacher (in Moodle) I can navigate to MoodleNet from the course gear menu, so I can find content for my course-|-The course gear menu has an item that links to MoodleNet-| |-As a teacher (in Moodle) I can enter my MoodleNet profile URL on my profile page, so people can find my MoodleNet profile page from Moodle- Handled in MDL-67885.|-An editable field for MoodleNet profile URL on the Moodle profile page- -A link to the MoodleNet profile- -MoodleNet instance URL to be derived from the profile URL-| h3. Acceptance Criteria: * There should be an admin setting (in adv features for now) ""Enable MoodleNet integration"", defaulting to enabled. * When the integration is enabled, there should be an image link in the footer of the activity chooser as per the mockups. ** If the tool_moodlenet plugin is uninstalled (a possibility), then the link should just be a link to the MoodleNet site (checking the user's profile for a site as needed). This WILL NOT call the MoodleNet endpoint. ** If the tool_moodlenet plugin is installed and the user DOES NOT HAVE a saved MoodleNet profile URL in their user profile, then the link will trigger a load of the MoodleNet selection pane in the chooser - as per UX mocks. *** If a user enters a profile URL at this step, this is saved to their profile and this pane should not be seen again (again, as per UX mocks). ** If the tool_moodlenet plugin is installed and the user DOES HAVE a saved MoodleNet profile URL in their user profile, then the link will be to the MoodleNet endpoint and will include the params: *** The Moodle site URL (e.g. my.moodle.org) *** The Moodle endpoint path (admin/tool/moodlenetendpoint.php) * When the integration is disabled, there should be no link in the activity chooser footer.",1 +"MDL-67885","02/06/2020 01:22:59","Add MoodleNet profile information into the user table / object / profile","||User story||Approach|| |As a user I can add my MoodleNet profile details to my user profile|When creating or updating a user, there is a field for a link to the user's MoodleNet profile.| * This is used to redirect the user to that profile when leaving Moodle to MoodleNet.",3 +"MDL-67887","02/06/2020 02:20:17","Create admin tool to deal with MoodleNet communication (tool_moodlenet all versions)","This issue is a foundation for several others as it creates the admin tool plugin (tool_moodlenet) and the basic communication flow between MoodleNet and Moodle. More specifically, it provides the endpoint which MoodleNet can POST information about the file (as JSON) to. This issue will help us to complete the following user story (it won't fully complete it because it only deals with the endpoint, not the processing + decision code): ||User Story||Approach|| |As a teacher, after selecting a resource in MoodleNet, I am redirected to my Moodle site where I can decide what to do with the imported resource.|MoodleNet will POST information about the resource, as JSON, to the Moodle endpoint. The endpoint will process the data and present the user with options for import.| h3. Acceptance criteria: * There is a new admin tool 'tool_moodlenet' created in core. * The plugin provides an endpoint for MoodleNet to POST to * MoodleNet should be able to POST to this endpoint (we need to simulate this in in testing in the first instance as it isn't built yet), regardless of whether a user is logged in or not and the POST data should be retained after login for use by the tool. * The referring MoodleNet page should be captured and present as a param in the wantsurl. -We require a plugin (admin tool) to handle receiving requests to include MoodleNet content into a course.- -It has been suggested that the workflow could be similar to how plugins are installed from the plugin database (moodle.org).- -Plugin workflow - The button to install a plugin is a base64 encoded string which contains information (name, component, version) related to the plugin to make a request back to fetch it later. - End plugin workflow.- * -Checks need to be done as to whether accepting files from MoodleNet is allowed by the system.- * -The user needs to be logged in with an authenticated account.- * -After getting the file it then has to be decided what to do with it- ** -Backup files to ultimately be restored.- ** -Other file types to be handled with a call back to activity plugins.- ** -An option to just put the file into the private files area of the user.- ||User story||Approach|| |-As a teacher (in Moodle), I am redirected to my Moodle site, and the MoodleNet resource is processed so I can use it in my Moodle site-|-I am redirected to the 'import from MoodleNet' flow on my Moodle site. The details of the MoodleNet instance and details of the MoodleNet resource are included in the redirect- -I am prompted to login if not already authenticated into Moodle. The flow should continue after logging in.- -Moodle downloads the file to user's private files, analyses the file and the metadata provided by MoodleNet about the resource, and takes the following action based on the type:- * -Course/activity backup (MBZ): Moodle automatically commences the course/activity restore workflow- * * ** -I am prompted to select where I want to restore the course, or in which course and section I want to restore the activity.- * -Any other file or link:- ** -Moodle determines what actions are most suitable based on the type of file, and the user can choose among a sub-set of:- *** -File resource- *** -Label resource- *** -Keep in private files- *** -Page resource- -***Link resource- ** -If adding as a resource, I'm prompted to select which course and section I want to import the file or link in (with the course and/or section the flow started in pre-selected, when applicable).- * -The file or link is added to the correct course and section, or file area (e.g. Private Files) as selected-|",5 +"MDL-67888","02/06/2020 02:32:36","Handling Moodle course backup files from MoodleNet (tool_moodlenet all versions)","This issue deals with MoodleNet resources which are Moodle course backups only. MDL-68094 deals with activity backups and is a follow on from this issue. If, once the user has clicked 'Send to Moodle' in MoodleNet, the file is detected as an MBZ file, the user is presented with a plugin page, asking the user to confirm their intent to restore the course backup file into Moodle (see mocks for look and feel of this page). Options to 'Cancel and go back' and 'Restore' are presented. If the user confirms the restore, the file should be downloaded by Moodle, and the user should be taken to the Step 1 of the restore process. They can then continue to restore the course as per the normal restore process. Downloading of the file into the relevant file area is handled by MDL-68132 and is a precursor to this issue. If the user cancels the restore, then they are redirected back to the referring page on MoodleNet. The acceptance criteria for this issue is as follows: # The decision page should be presented to the user when both of the following are true: -- MoodleNet posts to import.php AND -- The file is an MBZ file. # The look and feel of the decision page matches the mocks. This is a page, not a modal. # If accepted, the restore can be completed in full and a new course is created. # If cancelled, the user is sent back to dashboard. # If the user isn't logged in to Moodle, and they decide to cancel and go back, this also needs to take them back to dashboard. I.e. the 'Cancel' aspect must work through the login process.",3 +"MDL-67889","02/06/2020 02:36:26","Mirror drag and drop options when importing a resource from MoodleNet (tool_moodlenet all versions)","Once we have received POST data from MoodleNet for a file that is not a backup, we eventually (depending on whether or not we have the course/section or need to prompt the user for it - but that's another issue) need to present options to the user, asking them what module they'd like to use to handle the file import. We want to provide the same options that are presented during a drag and drop addition to a course. Drag and drop is handled by course module callbacks, specific to drag and drop. The objective here is to make use of that existing set of callbacks and present those same options to users conducting an import from MoodleNet into Moodle. Some notes on the way this works: # Moodle determines what actions are most suitable based on the type of file. Use the \{mod_plugin}_dndupload_register() and \{mod_plugin}_dndupload_handle() for each module to put their hand up to say they handle a certain type of file. So, what we want here is as follows: # A plugin page which presents a list of options to the user, based on the dnd hooks. # The page assumes the course and section have already been passed in (params to the page). E.g. In the workflow where the user starts in Moodle, MoodleNet POSTS back the course and section information to the import.php endpoint, so we have this already. # If the page does not have a valid course and section, show an error. # Once selected, the file should be downloaded (see MDL-68132) and then handed over to \{mod_plugin}_dndupload_handle() which will create the relevant content in the course. # Once content is created (as above step), the user should be redirected to the course home page + section. # This issue IS NOT scoped with creation of any course or section selection pages.",5 +"MDL-67899","02/07/2020 02:30:57","Emoji picker button does not have a description","h5. Issue The button to choose an emoji in the chat area is an empty button. The screen reader simply reads it as ""button"" which does not make sense. h5. Affected guidelines h6. AAA * 1.3.6 In content implemented using markup languages, the purpose of User Interface Components, icons, and regions can be programmatically determined. ",0 +"MDL-67900","02/07/2020 04:40:06","Drag and drop info texts should mention that the question types are not accessible to visually impaired users","h5. Issue It has been decided that drag and drop questions are not meant to be accessible. We decided to expand the description of these questions to remind teachers about this when they are creating questions. * -These question types are solely reliant on visual location to provide an answer:- ** -Drag and drop onto image question type- ** -Drag and drop marker question type- * -There is an image of text present with insufficient alt text. See screenshot-1.- h5. Affected guidelines h6. A * *Sensory Characteristics:* *1.3.3* Instructions provided for understanding and operating content do not rely solely on sensory characteristics of components such as shape, size, visual location, orientation, or sound. h6. AA * *Images of Text:* *1.4.5* If the technologies being used can achieve the visual presentation, text is used to convey information rather than images of text except for the following: ** *Customizable:* The image of text can be visually customized to the user's requirements; ** *Essential:* A particular presentation of text is essential to the information being conveyed. * Note: Logotypes (text that is part of a logo or brand name) are considered essential. h6. AAA * *Images of Text (No Exception):* *1.4.9* Images of text are only used for pure decoration or where a particular presentation of text is essential to the information being conveyed. Note: Logotypes (text that is part of a logo or brand name) are considered essential. h5. Affected browsers: * All",1 +"MDL-67901","02/07/2020 05:08:47","No label for clear my choice option on multiple-choice questions","h5. Issue * No label for clear my choice * 2 errors were found using W3C Nu Validation Service and filtered to indicate WCAG errors only. See screenshot-2. h5. Affected guidelines: h6. A * *Info and Relationships:* *1.3.1* Information, structure, and relationships conveyed through presentation can be programmatically determined or are available in text. * *Labels or instructions:* *3.3.2* Labels or instructions are provided when content requires user input * *Parsing:* *4.1.1* In content implemented using markup languages, elements have complete start and end tags, elements are nested according to their specifications, elements do not contain duplicate attributes, and any IDs are unique, except where the specifications allow these features. Note: Start and end tags that are missing a critical character in their formation, such as a closing angle bracket or a mismatched attribute value quotation mark are not complete. h5. Affected browsers: * All",2 +"MDL-67902","02/07/2020 07:20:42","Calendar month view accessibility issues","h5. Issue _Strikethrough issues won't be done here (a comment has been added into the description, to clarify how they will be processed)._ h6. A # The linked days of the month in the monthly view section read as ""1 link"" or ""15 link"" etc. The screen reader does not read the information that is provided on mouse focus which provides context. # No label on the course filter, and the new event button. See [^screenshot-1.png] and [^screenshot-2.png]. # -2 errors were found using W3C Nu Validation Service and filtered to indicate WCAG errors only. See [^screenshot-3.png] and [^screenshot-4.png]- These errors have been fixed in MDL-67969. h5. Affected guidelines h6. A * *Link Purpose (In Context):* *2.4.4* The purpose of each link can be determined from the link text alone or from the link text together with its programmatically determined link context, except where the purpose of the link would be ambiguous to users in general. * *Info and Relationships:* *1.3.1* Information, structure, and relationships conveyed through presentation can be programmatically determined or are available in text. * *Labels or Instructions:* *3.3.2* Labels or instructions are provided when content requires user input * *Parsing:* *4.1.1* In content implemented using markup languages, elements have complete start and end tags, elements are nested according to their specifications, elements do not contain duplicate attributes, and any IDs are unique, except where the specifications allow these features. Note: Start and end tags that are missing a critical character in their formation, such as a closing angle bracket or a mismatched attribute value quotation mark are not complete. h6. AAA * *Link Purpose (Link Only):* *2.4.9* A mechanism is available to allow the purpose of each link to be identified from link text alone, except where the purpose of the link would be ambiguous to users in general. h5. Affected browsers * All ",2 +"MDL-67914","02/10/2020 02:23:59","Update table_sql to support dynamic sorting","This is the first logical step after moving table_sql to have a generic web service. This is likely the smallest possible change that we can make We will need to: # add new arguments to the web service: ## {{sortby}} ({{string}}) A string describing the name of a sortable column ## {{sortdir}} ({{int}}) The sort direction to use when sorting that column # write a new set of AMD modules to handle capture of the sorting # update our output of the table to instantiate our new JS h3. JS Root path: lib/table/amd/src General structure: {code} dynamic.js local/dynamic/repository.js local/dynamic/selectors.js local/dynamic/events.js {code} Need to create a {{setup()}} function which listens on the outer-most element for the table (ideally a new {{}} which the table is placed in. We can keep any arguments in data-attributes on that div We look for any clicks on any of the sort buttons and intercept Call the WS and replace the {{}} tag with the new one",5 +"MDL-67915","02/10/2020 02:25:16","Update table_sql to support dynamic show/hide of columns","Similar to MDL-67914 but supporting showing and hiding of a column",1 +"MDL-67917","02/10/2020 03:54:24","Create a single filter for tables and the AMD structure behind this","The following is an approximation of the filter language used: {code} filterset = jointtype (filter *("", "" filter)) jointype = ""All"" / ""Any"" / ""None"" filter = ([jointype] filterthing ?= filtervalues) filterthing = ""Group"" / ""Role"" / ""Keyword"" / ... filtervalues = filtervalue *("","" filtervalue) filtervalue = quoted-string {code} The initial part of the project will be to create a single {{filter}}. That is to say: # A dropdown to select a pre-defined enumerated list for the Join Type (All, Any, None) for the current filter # A dropdown to select a pre-defined enumerated list for the filterthing (Group, Role, etc.) for the current filter # A way to select the values For the initial work: # we will only be creating a working interface, it will not have any effect on the data. Purely visual. # I would advise chosing Status as this is a simple, enumerated list, with static values and low complexity; # We will only create the initial {{filter}}. Not a full {{filterset}} The follow-on work will then comprise of: # Adding the remaining enumerated types (Groups, Roles, Enrolment methods) # combining multiple filters into a {{filterset}} # Adding the date since type. This is a _single_ value filter ([number] days) and no jointype # Adding support for non-enumerated types (date since, keyword) The initial work will _not_ be plumbed in. It will be an isolated interface until the backend is ready to receive it.",1 +"MDL-67924","02/11/2020 00:47:38","Move turn editing on button out of the edit menu on boost","Move the turn editing on button (on a course page) out of the edit menu and immediately visible. Please see the screen shot for what this should look like",1 +"MDL-67943","02/12/2020 09:25:12","Update windows timezone list in core_date","*GENERAL NOTE*: If the supported PHP versions were shipped with an older IANA timezone database version at some point, please use the timezone list from the older tz database version. For example, assuming the current supported PHP versions are 7.2, 7.3 and 7.4, and the current tz databse version is _2020a._ As the tz databse version 2020a was released on 23/04/2020, at some point 7.2, 7.3 and 7.4 (prior to 7.4.6) were shipped with the older tz database version. These sites will not have (support) the latest timezone changes from _2020a_ (timezone renaming, deprecation, etc.) and therefore, we should not use or map them in _$badzones_ or deprecate the old timezone strings. *INSTRUCTIONS* *PART 1*. Ensure that each windows timezone ([https://support.microsoft.com/en-us/help/973627/microsoft-time-zone-index-values]) exist in _$badzones_ (_lib/classes/date.php_) and have a mapping to current good (canonical) IANA timezone from the IANA timezone information database ([https://data.iana.org/time-zones/]). Please see *GENERAL NOTE* to determine which timezone database version should be used. Also, ensure that all good IANA timezones have translations. Resources that could help finding the equivalence between the Windows and the IANA timezones: * [https://en.wikipedia.org/wiki/List_of_tz_database_time_zones] * [https://github.com/unicode-org/cldr/blob/master/common/supplemental/windowsZones.xml] *PART 2*. Ensure that old IANA timezones are not being used as target in the mapping in _$badzones_ (_lib/classes/date.php_). Every old IANA timezone used should be replaced with the good (canonical) IANA timezone. Please see *GENERAL NOTE* to determine which timezone database version should be used to find the old timezones. Resources that could help finding the IANA timezone changes: * [https://en.wikipedia.org/wiki/List_of_tz_database_time_zones] * [https://data.iana.org/time-zones/tzdb-2020a/backward] (replace ""tzdb-2020a"" if a different tz database version is required**) *PART 3:* Ensure that there is a mapping between every old timezone and new timezone name in _$badzones_ (_lib/classes/date.php_). Please see *GENERAL NOTE* to determine which timezone database version should be used to find the old timezones. Additional resources that could help finding the IANA timezone name changes: * [https://www.php.net/manual/en/timezones.others.php] * [https://en.wikipedia.org/wiki/List_of_tz_database_time_zones] * [https://data.iana.org/time-zones/tzdb-2020a/backward] (replace ""tzdb-2020a"" if a different tz database version is required**) According to [https://en.wikipedia.org/wiki/List_of_tz_database_time_zones] the old timezone names are either deprecated or they are considered to be an alias to the good (canonical) timezone name. For a clearer distinction, add the mappings for the deprecated timezones under the ""_A lot more bad legacy (deprecated) time zones._"" section in _$badzones_ (lib/classes/date.php), while the aliases under ""_Link old timezone names with their new names._"" NOTE: The general purpose of *PART 3* is to provide automatic timezone name changes, so when a calendar event or a user comes with Asia/Calcutta, the event or user is changed to Asia/Kolkata (or whatever is the new timezone name is). Also, in the future this can be expanded (in followups) for user edit and user upload. *PART 4:* Deprecate and remove the existing translations (_lang/en/timezones.php_) of the old IANA timezones. Please see *GENERAL NOTE* to determine which timezone translations are safe to be deprecated and removed. ------------------------ For the testing instructions you can manually edit the .ics file from the cloned issue: # Open the .ics file using a text editor. # Replace the timezone ID there (i.e. ""U.S. Mountain Standard Time"") to one of the new ones added. # Replace the time entries (i.e. ""202001"" (2020 is the year and 01 the month) to a more recent date). ------------------------ _Please create a clone of this issue for next version before closing this_",3 +"MDL-67968","02/14/2020 12:29:51","Calendar: New event: Accessibility issues","h5. Issues Strikethrough issues won't be done here (a comment has been added into the description to clarify how they will be processed). h6. A # No label. See: ** [^Fig. 5.01.png]. This is a false positive. WAVE complains about missing label for a select element that is hidden. not only by visibility: hidden; display: none; style, but also by aria-hidden=""true"", so nothing will be done here. ** [^Fig. 5.02.png] ** [^Fig. 5.03.png] # -Errors were found using W3C Nu Validation Service and filtered to indicate WCAG errors only-. Nothing to do here because these errors will be done in: ** -Duplicate ID for site blocks-. Fixed as part of MDL-67969 ** -Invalid 'for' attribute for the course selector on the view calendar page-. Fixed as part of MDL-67902 h6. AA # -Colour contrast #3, #4-. Will be addressed on MDL-64494 h6. AAA # -There is a loss of data after a re-authentication-. This has been left out as it was AAA and as it required a massive amount of work and a lot of code refactoring # Abbreviations such as ""Sun"", ""Mon"" etc. are not fully explained. Even well known abbreviations need to either be expanded on the first use on a page or that a link to a glossary or list of terms be provided h5. Affected guidelines h6. A * *Info and Relationships:* *1.3.1* Information, structure, and relationships conveyed through presentation can be programmatically determined or are available in text. * *Labels or Instructions* *3.3.2* Labels or instructions are provided when content requires user input * *Parsing:* *4.1.1* In content implemented using markup languages, elements have complete start and end tags, elements are nested according to their specifications, elements do not contain duplicate attributes, and any IDs are unique, except where the specifications allow these features. Note: Start and end tags that are missing a critical character in their formation, such as a closing angle bracket or a mismatched attribute value quotation mark are not complete. h6. AA * *Non-text Contrast:* *1.4.11* The visual presentation of the following have a contrast ratio of at least 3:1 against adjacent color(s): *User Interface Components* Visual information required to identify user interface components and states, except for inactive components or where the appearance of the component is determined by the user agent and not modified by the author; *Graphical Objects* Parts of graphics required to understand the content, except when a particular presentation of graphics is essential to the information being conveyed. h6. AAA * *Re-authenticating:* *2.2.5* When an authenticated session expires, the user can continue the activity without loss of data after re-authenticating. * *Abbreviations:* *3.1.4* A mechanism for identifying the expanded form or meaning of abbreviations is available. h5. Affected browsers * All",2 +"MDL-67969","02/14/2020 12:54:37","Calendar: View event details: Accessibility issues","h5. Issues h6. A * 2 errors were found using W3C Nu Validation Service and filtered to indicate WCAG errors only. See [^Fig. 1.01.png] and [^Fig. 4.03.png] h5. Affected guidelines h6. A * *Parsing:* *4.1.1* In content implemented using markup languages, elements have complete start and end tags, elements are nested according to their specifications, elements do not contain duplicate attributes, and any IDs are unique, except where the specifications allow these features. Note: Start and end tags that are missing a critical character in their formation, such as a closing angle bracket or a mismatched attribute value quotation mark are not complete.",2 +"MDL-67970","02/14/2020 13:33:02","Course homepage: Editing mode on: Accessibility issues","h5. Issues h6. A * Missing label. See [^Fig. 7.01.png] * Errors were found using W3C Nu Validation Service and filtered to indicate WCAG errors only. h6. AA * Colour contrast #25 h6. AAA * There are multiple ""More help"" links which all point to different locations. h5. Affected guidelines h6. A * *Labels or Instructions* *3.3.2* Labels or instructions are provided when content requires user input * *Parsing:* *4.1.1* In content implemented using markup languages, elements have complete start and end tags, elements are nested according to their specifications, elements do not contain duplicate attributes, and any IDs are unique, except where the specifications allow these features. Note: Start and end tags that are missing a critical character in their formation, such as a closing angle bracket or a mismatched attribute value quotation mark are not complete. h6. AA * *Non-text Contrast:* *1.4.11* The visual presentation of the following have a contrast ratio of at least 3:1 against adjacent color(s): *User Interface Components* Visual information required to identify user interface components and states, except for inactive components or where the appearance of the component is determined by the user agent and not modified by the author; *Graphical Objects* Parts of graphics required to understand the content, except when a particular presentation of graphics is essential to the information being conveyed. h6. AAA * *Link Purpose (Link Only):* *2.4.9* A mechanism is available to allow the purpose of each link to be identified from link text alone, except where the purpose of the link would be ambiguous to users in general. h5. Affected browsers * All",1 +"MDL-67976","02/16/2020 03:53:23","Create filter classes","Rather than passing in arbitrary strings, arrays, ints, and other values into tablelib to describe filter values, it would be beneficial to describe possible values more accurately. I would like to propose that we implement a set of value classes for filtering. {code} abstract class filterset { public function __construct(filter[], int $jointype): void; public function add_filter(string $name, filter $filter): self; public function validate(): bool { // Ensure that only specified filter types are here. // Use a new function to get the description of those - e.g. $this->get_valid_filtertypes(); } } abstract class filter { const JOINTYPE_NONE = 0; const JOINTYPE_ANY = 1; const JOINTYPE_ALL = 2; public function __construct(int $jointype, array $values): void; public function add_value($value): self; } class group extends filter { public function add_value(int $value): self { $this->values[] = $value; } public function validate(?int $courseid): bool { // Check that they're all valid groups in the (optionally-specified) course. } } {code} ",0 +"MDL-67982","02/17/2020 03:16:56","Investigation of potential MoodleNet approaches","MDL for tracking time and discussions surrounding the project. Sub task of MDL-67883",5 +"MDL-68014","02/20/2020 08:45:59","Redundant alt text for preconfigured LTI tools in activity chooser","To replicate: # Create a [pre-configured LTI tool|https://docs.moodle.org/38/en/External_tool_settings#Site_administration_settings] and show it in both activity chooser and as a preconfigured tool. # Go to a course # Turn editing on and add a new activity. # Inspect the preconfigured tool using an accessibility tool (e.g. axe, wave) # Expected: There should be no accessibility issues # Actual: A redundant alt text issue is being shown. E.g. on axe, {noformat}Issue description Ensure image alternative is not repeated as text Element location img[alt=""Test\ tool\ provider""] Element source To solve this violation, you need to: Fix the following: Element contains element with alt text that duplicates existing text {noformat}",1 +"MDL-68019","02/21/2020 03:34:22","Improve favourites performance for the activity chooser","There are 2 parts to this: The first, is an addition to the existing API, to address a situation encountered in MDL-67585. This situation is when a component wishes to store favourites for an area using multiple different itemtype strings. In such a case, we'd like to be able to get the favourites for all the item types at once - at present, this must be done via multiple API calls to find_favourites_by_type. The second is to update the calling code in content_item_readonly_repository, to use the single new API call instead of several calls in a loop (the current situation). ",1 +"MDL-68030","02/24/2020 05:33:26","Finalise the final layout of various Activity chooser elements","During the development of the activity chooser we have been focused on the functionality of the chooser and eye balling the designs. Here, we want to ensure we match the designs and handle any unexpected cases in the designs and make sure we handle the responsiveness of the modal and items within it. I can foresee some changes will have to be made as the original design had a reduced number of activities than we have in core so either scrolling or a larger modal will have to be used. Link to invisio [here|https://projects.invisionapp.com/share/49UI6T8R2AK#/screens/388682476]",3 +"MDL-68051","02/25/2020 15:49:20","Some more accessibility issues for the tabs and tab panels in the revamped activity chooser","Seems like we missed some items about the accessibility of the tabs for the activity chooser. h5. Switching tabs The keyboard navigation between the tabs and their respective tab panels seem to be broken after switching between tabs. To reproduce: # ## Switch to another tab using the keyboard. ## Press tab again. Expected behaviour: {noformat}When the tab list contains the focus, moves focus to the next element in the tab sequence, which is the tabpanel element. {noformat} However, the focus does not move to the tab panel. h5. Number of tabs # Even when the Favourites or Recommended tabs are hidden, the screen reader keeps announcing that there are 3 tabs on the list. This will be confusing to the user. h5. Axe # Axe is reporting the following violation about the tab list: {noformat}
elements must be contained in a or
Issue description: Ensures
- elements are used semantically Impact: serious Element location #activities-5 > .nav-item:nth-child(1) Element source
- To solve this violation, you need to: Fix the following: List item does not have a
,
without a role, or a role=""list"" parent element {noformat} Perhaps we can render the tab list as not an unordered list, similar to [https://www.w3.org/TR/wai-aria-practices/examples/tabs/tabs-2/tabs.html?] h5. Tabs keyboard navigation # Tabs keyboard navigation is not working in certain browsers (ex. Firefox). This is due to the usages of 'e.srcElement' which is not supported in every browser. ",1 +"MDL-68055","02/26/2020 01:50:34","Module description text not formatted during export","This needs to be handled as FORMAT_MARKDOWN via format_text in the exporter.",1 +"MDL-68056","02/26/2020 05:48:10","Improve performance of course_section_add_cm_control()","This method is called once per course section and currently handles a few cases: # If $THEME->enablecourseajax == true AND $course->id == $this->page->course->id AND $usermodchooser == true (a user pref), then display the ""Add an activity or resource"" link allowing the chooser modal to be opened. # If $THEME->enablecourseajax == true AND $course->id == $this->page->course->id AND $usermodchooser == false (a user pref), then display fallback 1 - a control including two lists of resources and activities which, when selected, take the user to the creation page for that module. # If $THEME->enablecourseajax == true AND $course->id != $this->page->course->id, then display fallback 1 - a control including two lists of resources and activities, which, when selected, take the user to the creation page for that module. # If $THEME->enablecourseajax == false, then display fallback 1 - a control including two lists of resources and activities which, when selected, take the user to the creation page for that module. # If JS is disabled in the browser (not a case we support any more), then fallback 2 is shown - a control including the same two lists of resources and activities plus a 'Go' submit button. The user needs to select the activity/resource and then click 'Go' in this fallback case. Fallback 1 and 2 are handled by the same code - it's just that when loaded in a browser without js enabled, the 'Go' button is shown (it's inside a