diff --git "a/database/tawos/deep/MDL_deep-se.csv" "b/database/tawos/deep/MDL_deep-se.csv" new file mode 100644--- /dev/null +++ "b/database/tawos/deep/MDL_deep-se.csv" @@ -0,0 +1,1395 @@ +"issuekey","created","title","description","storypoint" +"MDL-1626","07/08/2004 10:38:38","Forum: Per-discussion subscription","I am finding that my inbox is absolutely flooded with unwanted moodle mails off the forum script. This is very annoying and I know it will similarly annoy my users. In fact it will put them off the system. The problem arises because unlike other discussion boards moodle messages are emailed to me from the entire forum, not just the thread I have started or responded to. The overwhelming of people's inboxes is a serious business: it could be said that moodle is generating spam because the email feature is so unfocused. Is there any chance this is going to be improved please?",100 +"MDL-3714","07/08/2005 09:59:21","Forum: Reply by e-mail","How about the ability to post to the forums via email?",100 +"MDL-5583","05/22/2006 22:15:00","allow teachers to specify certain fields in database activity as required","When creating a database, allow the teacher to specify whether a field must be filled in or not.",20 +"MDL-8501","02/13/2007 16:36:35","Forum: proceed to next thread link","Please put a link to jump to the next thread in the forum interface... Forums are very cool but the evaluation process is time consuming and, for a teacher, time is everything when evaluating 100s of students... ",20 +"MDL-9469","04/20/2007 22:06:25","Forum: Ability to export content at the end of the term","My faculty would really like the ability to export the content from each forum as a record of the ""conversation"" from each term. That way, we could keep it as an archive or as a record of the activity in the class.",3 +"MDL-10115","06/13/2007 23:16:23","A use profile's course list is arbitarily limited with no way of seeing complete list","When viewing a user's profile, if the list of their courses exceeds 21 (I think) an ellipsis is displayed. This seems a bit useless because... a) You can't click on the ellipsis to see the rest of the courses b) The list isn't even in alphabetic order so it becomes even more arbitrary c) the ellipsis is easy to miss, so you may not realise the list is truncated Suggest either making this work properly, i.e., the ellipsis is clickable OR if the list is not considered important just put ""too many courses to show"" if it exceeds a certain amount. It would seem sensible to display them in alphabetic order too. Without this it is difficult for an administrator to see all the courses a user is in if (for example) checking role assignments.",13 +"MDL-12403","12/02/2007 04:14:05","backup or import of single quiz includes all questions in database","When making a backup of individual quizzes, no matter how many (or how few) quizzes I back up, the backup includes all questions from the question bank, not only those used in the quiz which I'm backing up. So, in an extreme case, if I back up a single quiz, and then restore it to another course, I unintentionally transfer hundreds of questions along with this quiz. The same happens when importing a quiz to another course.",100 +"MDL-13114","01/24/2008 01:10:31","Include bulk course create and remove with Moodle through the use of CSV files","We're looking to Moodle for a replacement to Blackboard Enterprise. In order for Moodle to be a viable replacement we need a way to bulk create and delete courses based on CSV files. The bulk create courses is handled by use of a 3rd party module (uploadcourse.php created by Rory Allford). However once we import say 700+ courses there's no way to them bulk remove them at the end of a semester (removing 1 by 1 would be too time consuming). We would really prefer that this functionality be included within Moodle, as relying on 3rd party modules (no matter how good they are), inherits a risk if the module stops getting updated.",100 +"MDL-16474","09/11/2008 21:35:07","Allow single-item scales","The single-item scale, ""Useful"", used on moodle.org is in demand! See http://moodle.org/mod/forum/discuss.php?d=105515 Currently only scales of 2 or more items may be created.",8 +"MDL-16982","10/23/2008 18:26:42","Adding data mapping for custom user fields","I'd like having the possibility to add data mapping for custom user fields when I use LDAP or DB auth modules",40 +"MDL-17081","10/31/2008 03:34:21","Implement import/export ""Permissions"" settings for ""Manage roles"" tab","Suggest to implement ""import / export"" settings for the role ""permissions"". See the two proposed solutions (probably only one need to be implemented)... This is particularly useful for larger ""enterprise-level"" moodle implementation as we often have staging, testing, and development moodle installations and if we have customized role settings, it is a pain in the butt to manually change all of them one by one (it's a long list of the ""Permissions"" for all the newly deployed moodle instances. Thanks!",20 +"MDL-18014","01/24/2009 22:57:45","Automatically and periodically save WYSIWYG editor content as a draft/concept","This emerged during the discussion at MDL-13370. Shortly: use AJAX to automatically and periodically (eg. every minute) save the content of a WYSIWYG editor to the concepts (drafts) space. See GMail for the working example. It seems to me that we could use table mdl_post for this therefore not DB changes should be required. There will be a flag for a rich text field definitions that enables this feature. Every WYSIWYG will have to have some uniq identifier. Concepts are accessible to their owners only (and admins?) - maybe via a card in their profiles? Their lifetime is a subject of configuration - couple of hours by default.",40 +"MDL-18229","02/12/2009 22:05:25","Add grade item and student grades quick edit feature to the grader report","Add grade item and student grades quick edit feature to the grader report to enable editing for each grade item and for each student: * Grades and feedback * Grade overrides * Excluded grades Thanks to developers at the LSU for this feature - see http://moodle.org/mod/forum/discuss.php?d=101449 for more details. ",100 +"MDL-18375","02/25/2009 20:42:54","Displaying and selecting dates throughout Moodle should allow the use of multiple calendars","I implemented a patch to add the capability of working with other calendar systems than just Gregorian. I'll provide the instructions to apply the patch in following post",100 +"MDL-18633","03/22/2009 04:57:48","User profile: add last ip field to user view","Similar to MDL-18518, this request to add the Last IP address could be useful to a site administrator trying to track down where a user last access Moodle from. Patch for 1.9 attach, I'll come up for one for HEAD as well. Peace - Anthony",2 +"MDL-18770","04/02/2009 00:52:48","Non-graded Assignment and Quizzes appear in the gradebook and have Max Grade assigned","Non-graded Assignment and Quizzes are getting displayed in the gradebook, and they look like being included into aggregation in the Cat&Items interface, since they have Max Grade value set to 100. Other activities behave definitely. E.g. If Forum is not graded, it does not appear in the gradebook as a column. Which for me is an expected behavior. 1. Add an Assignment. Set it to No Grade. Column will still appear in the gradebook. Now go to the Cat&Items interface. It will display Max Grade for that column to be 100 points. (Though it will not be actually included into the calculation) 2. Add an Assignment. Set it to be graded on a scale (scales are NOT included in aggregation for us). Maximum Grade in the Cat&Items interface will display some number (e.g. 3, if there are 3 items in a scale). It is confusing, since one would now expect that 3 to be calculated toward course/category total. 3. Add a quiz, add some questions, and make the quiz to be worth 0 points. Maximum Grade in the Cat&Items interface will still be 10 points (or 100). Interestingly enough, I can manually delete a gradebook column for this kind of quiz. (But, once I delete a column, there is no way for me add it back, even though I will make the quiz gradable) I think MDL-14017 is related to this. ",13 +"MDL-20045","08/12/2009 01:00:34","Add unofficial support for custom context levels","This issue is in reference to http://moodle.org/mod/forum/discuss.php?d=111362. In brief, one of our Moodle extensions would benefit greatly from being able to use Moodle's roles and contexts system, and we would need to define our own context levels. However, we would like to be able to do this without having to differ from core in unmaintainable ways. We believe that this would be helpful to many other Moodle partners and plugin developers, and some of our proposed changes may help to improve the maintainability and readability of core Moodle code.",40 +"MDL-20250","09/10/2009 20:33:29","Add admin settings for disabling particular gradebook calculations, category overriding and grade minimum on the grader report","An admin setting for selecting which aggregation types are available was added to Moodle 1.9.5. Further admin settings for disabling gradebook features such as multiplicator, offset, calculations (see MDL-18049 for details of exactly which features) should be added to Moodle 2.0.",40 +"MDL-21180","12/24/2009 00:57:43","Category children default to extra credit when category agg is switched from Weighted to Simple","Category 1 is set to Weighted Mean of Grades Its children all have weights assigned to them Category 1's agg method is switched to Simple weighted mean of grades Its chlldren are now all extra credit This was kinda, supposedly fixed with MDL-19407 but only took into account an item moved from a category of WM to SWM... not if the entire category is switched (common in our parts).",40 +"MDL-21415","01/22/2010 01:24:07","Course Participation Report doesn't abide by separate groups","In 1.97 (haven't tested other versions), the participation report shows all students to a non-editing teacher in a group. My courses are set to separate groups, and permissions for Non-editing Teacher for showallgroups are set to prevent. When I log in as a non-editing teacher I set up, and go to the Course reports, click the participation report, choose an activity, and then set ""Show only"" to Student, all student show up. Shouldn't the participation report also respect separate groups?",20 +"MDL-22236","04/29/2010 10:51:59","Design way to send files by web service (upload)","Find a way to send any files to any draft file area in Moodle and use them in the web service calls. Original issue description: {quote} Sending files to hub currently works but the design has been refused by Petr because it uses ws token in a POST request with $_FILES. After talking with Dongsheng and Petr, the conclusion was we will be sending files by web service (probably called in a cron script, if the file is too big). And biggest files will be chunked in order to be sent. It implies to write a new file web service design. Downloading files could need to follow the same design... {quote} ",40 +"MDL-22669","06/04/2010 10:41:20","Moodle bug with course restore section count","Course import/restore: if source course has more sections, create them and increase numsections Before this, all modules that were in non-existant sections sent to section 0. ",8 +"MDL-23646","08/04/2010 10:07:40","TinyMCE can't be resized and doesn't scroll for wide content, especially on small screens","When editing an HTML page in 2.0 on a Netbook (I think the one I saw was an eeePC) the screen is so small that the dragging handle of TinyMCE gets cut off and the whole thing is pretty well useless - see http://screencast.com/t/NmE1ODEwM for an example. No idea if this is something which is fixable by setting the default width of the editor based on the width of the browser, but thought I'd mention it anyway... *Replication steps:* # Log in as admin # Navigate to Site admin > Appearance > Site selector # Choose a theme with blocks on the right, such as Binarus # Navigate to a course # Create a page resource # Reduce the size of the browser window and note the effect on the HTML editor Expected result: The HTML editor resizes down before it is covered by blocks on the right. Actual result: The right edge of the HTML editor disappears under the blocks.",20 +"MDL-24287","09/20/2010 11:20:56","Convert group members selector to Shifted YUI3 module.","After working on MDL-24262 I think it is a very good idea to convert the group/user selectors to object orientated yui modules with all arguments being passed in rather than set as globals within the page. This will make the code clearer, and help improve JS sandboxing. Cheers Sam",13 +"MDL-24343","09/23/2010 02:04:08","Properly deprecate unzip_file/zip_file","Sam - Related to your recent commit for MDL-19786, I did a grep of 2.0 code base and found a couple more instances of where the deprecated unzip_file/zip_file is being used: /question/format/blackboard_six/format.php /lib/componentlib.php Peace - Anthony p.s. - Perhaps we should create a meta issue to grep for deprecated functions as part of code clean up",3 +"MDL-24380","09/25/2010 00:47:57","Chat: autoscroll help popup incorrect and doesn't display fully (it only concerns the alternative chat methods)","Autoscroll help popup gives info on using chat, rather than the autoscroll feature.",3 +"MDL-25473","12/01/2010 02:12:44","Embedded MP4 videos via linking to the course file loops when finished playing.","When I embed a QuickTime video (MP4) like this: {code} {code} It loops automatically when it is finished playing. This doesn't happen with FLV videos. I went into the Moodle folder -->filter ------>multimediaplugin ----------->Find every occurrence of the word loop (there were 4) and change true to false. Then I went back to where the video was embedded and added this tag before my embedded link: {code} {code} The video stopped after playing once. ",5 +"MDL-26170","01/28/2011 14:13:13","Deleted Forum & Blog Posts in RSS Block","In Moodle 2.0.1+, even after deleting forum/blog post, it continues to show up in the RSS block even after cron is run. Spammers can exploit this.",8 +"MDL-26244","02/03/2011 02:24:47","'Choose a link' for database URL field gives confusing message","Going to add/edit a record in the ""Modules and plugins"" database a user founds a lot of ""Choose link"" button. The problem is that these buttons are completely useless because the file picker page they call, displays: ""Spiacente, nessuno dei repostory disponibili può restituire file esterni."" [that in English should sound like: Sorry, none of the available repository may return external files.] Please take these buttons off.",8 +"MDL-26401","02/15/2011 03:07:53","Byte order mark at the beginning of import groups file fail the process with the confusing error message","Import Groups from the .csv fails in Moodle 2.0.1+ (Build: 20110209) Tested on QA site with the file that works ok in 1.9 (attached) Error message: Error writing to database Debug info: Stack trace: * line 394 of /lib/dml/moodle_database.php: dml_write_exception thrown * line 874 of /lib/dml/mysqli_native_moodle_database.php: call to moodle_database->query_end() * line 916 of /lib/dml/mysqli_native_moodle_database.php: call to mysqli_native_moodle_database->insert_record_raw() * line 135 of /group/lib.php: call to mysqli_native_moodle_database->insert_record() * line 171 of /group/import.php: call to groups_create_group()",0 +"MDL-26408","02/15/2011 06:12:40","IMS Enterprise admin notifications fail on message_send()","Error: !!! Coding error detected, it must be fixed by a programmer: Could not load preference message_provider_imsenterprise_imsenterprise_enrolment_loggedoff. Does the component and name you supplied to message_send() match a row in message_providers? Message providers must appear in the database so users can configure how they will be notified when they receive messages. !!! !! blah !! !! Stack trace: * line 126 of /lib/messagelib.php: coding_exception thrown * line 247 of /enrol/imsenterprise/lib.php: call to message_send() * line 364 of /lib/cronlib.php: call to enrol_imsenterprise_plugin->cron() * line 79 of /admin/cron.php: call to cron_run() !! Does look like any db/messages.php ",2 +"MDL-27339","05/01/2011 22:07:26","The link Create ""File system"" instance do not work","if an admin has defined that user can add repository instances into the user context, user sees the Create File system instance link, but they don't get permission to do this. Screen shows on left left side admin settings and the parts in the middle and on the right side are the users view.",5 +"MDL-27953","06/21/2011 08:06:26","Upload users option only allow the following authentication options: Manual account, or No login","When uploading a CSV file of users in 2.0.3 the ""Choose an authentication"" drop-down only gives the following options: Manual account No login In 1.9.x I get the following authentication options: Manual account No login LDAP server Email-based self-registration ",8 +"MDL-28162","07/03/2011 17:42:52","[ERROR] Automated backup status","Using Automated backup I continue to receive errors Summary ================================================== Courses: 15 OK: 7 Skipped: 3 Error: 0 Unfinished: 5 Some of your courses weren't saved!! As you can see some courses save OK and others are Skipped and 3 are unfinished. The errors look like this Course Time taken Status Next backup ASHS VLE 3 Jul, 06:01 - 3 Jul, 06:01 OK 4 Jul, 06:00 GCSE ICT Unit 1 3 Jul, 07:41 - 4 May, 22:53 Unfinished 5 May, 18:00 Student Council 3 Jul, 09:16 - 4 May, 22:52 Unfinished 5 May, 18:00 Staff Room 5 May, 18:21 - 5 May, 18:21 Skipped 6 May, 06:00 Resources 3 Jul, 02:51 - 4 May, 22:52 Error 5 May, 18:00 GCSE ICT Chap 1 5 May, 18:26 - 5 May, 18:26 Skipped 6 May, 06:00 GCSE ICT Unit 2 3 Jul, 04:26 - 4 May, 22:52 Error 5 May, 18:00 Functional Skil 3 Jul, 06:01 - 3 Jul, 06:01 OK 4 Jul, 06:00 Yr11 ICT Group 1 Jan, 00:00 - 1 Jan, 00:00 Skipped 1 Jan, 00:00 Year 7 3 Jul, 06:01 - 3 Jul, 06:01 OK 4 Jul, 06:00 Year 8 ICT 3 Jul, 06:01 - 3 Jul, 06:02 OK 4 Jul, 06:00 Year 9 ICT 3 Jul, 06:02 - 3 Jul, 06:02 OK 4 Jul, 06:00 GCSE French 3 Jul, 06:02 - 1 Jan, 00:00 Error 1 Jan, 00:00 GCSE German 3 Jul, 07:36 - 3 Jul, 07:36 OK 4 Jul, 06:00 GCSE Maths 3 Jul, 07:36 - 3 Jul, 07:36 OK 4 Jul, 06:00 If I try to look at the detailed backup logs for any course I get the message Detailed execution log Course: ASHS VLE No logs have been found ",100 +"MDL-28448","07/24/2011 19:19:01","Teachers cannot delete user submissions - advanced uploading of files","In 1.9 teachers had the ability to delete submitted files as well as revert the status to draft. In 2.x the teacher deletion of files is not possible.",20 +"MDL-28631","08/06/2011 19:45:51","forbid use of cookies especially from javascript","Our developers and theme designers keep smuggling in cookies, this is not compatible with $CFG->cookiehttponly and is against some privacy laws. Simply stop relying on cookies and if necessary use user preferences. Offenders: * admin roles UI * lib/cookies.js * scorm data model * repository * anomaly theme Solution: 1/ educate integrators and developers - see MDL-17084 for ajax user preferences 2/ fix the code 3/ fix dev docs",40 +"MDL-29070","08/24/2011 01:50:19","Clean enrol_imsenterprise following coding guidelines","While reviewing MDL-28962 I detected that enrol/imsenterprise/lib.php is one of the worst files I've seen from the POV of Moodle coding guidelines (spaces, comments..., if/loop...). I think it would be great to perform a general cleanup for it. For your consideration if only dev or all 2.x stable branches too (note that, right now the file is 100% the same in 20, 21 and master). I'm sending this to STABLE backlog initially. Ciao :-)",3 +"MDL-30195","11/09/2011 15:57:34","Export forum discussion without attachments to google docs portfolio","We've got google docs portfolio enabled in our moodle site. Now, when I want to export a forum discussion to google docs and no forum post within this discussion contains any attachments, the export works flawlessly. As soon as a forum post within this discussion contains an attachment (mainly an image) and a) when exporting the whole discussion, there is a nice but meaningless error message saying ""No common formats between any available portfolio plugin and the calling location forum_portfolio_caller"" b) when exporting a single post, google docs is not available anymore as portfolio Would it be possible to improve this to export the forum discussion to google docs regardless of any attachment so that the user gets at least the discussion text?",20 +"MDL-30431","11/24/2011 00:26:53","Attempting to edit wiki comments from another user causes an error","*Replication steps:* # user A (student role) creates a comment on a wiki # user B (teacher role) tries to edit user A's comment # when user B tries to save the edited comment - {noformat} Coding error detected, it must be fixed by a programmer: Invalid state passed to moodle_page::set_state. We are in state 0 and state 3 was requested. http://docs.moodle.org/21/en/error/debug/codingerror {noformat} user A is able to edit their own comment quite happily",13 +"MDL-30668","12/09/2011 11:39:05","Prevent the grader report from storing serialized data in the user_preferences table","See MDL-20245. When categories are collapsed on the grader report it appears than an array is serialized and stored in the user_preferences table. This table is really for simple name value pairs. It would be good if we could avoid storing serialized data and instead only stored human readable data.",20 +"MDL-30812","12/20/2011 01:44:33","Latest backup files generate error/setting_invalid_ui_label upon restore","Administrators and staff are unable to restore recently created course backup files. Prior to the upgrade to 2.1.3 any backup file created can be restored into a new course even now. Since this upgrade the restore process goes through the steps, but upon pressing ""restore"" an error/setting_invalid_ui_label is generated and upon pressing continue the restored course is showing up as an invisible course in the process of being restored, but never completes. We did an upgrade to the latest Moodle version 2.2 but this did not alleviate the error. The problem appears to be with the creation of the backup file as any created since the upgrade to 2.1.3 is now generating the error/setting_invalid_ui_label and all backups created prior to 2.1.3 can still be restored successfully.",20 +"MDL-30839","12/21/2011 00:43:20","form validation and error recovery","A better mechanism needs to be used to help users identify errors in form submissions. The text that appears on the page after an invalid submission is not easily found by screen reader users. There are several techniques for improving error recovery in forms. The basic premise is to 1. either automatically set the focus to the error message (usually used server-side validation) or use ARIA attributes to notify the user of an error message (usually used client-side validation) 2. provide enough detail in the error message so the user knows what the error was 3. provide links within the context of the error message to allow users to easily jump to the parts of the form where errors occurred WebAIM's tutorial on Error Recovery in Forms http://webaim.org/techniques/formvalidation/#error W3C Technique for ""Creating a mechanism that allows users to jump to errors"" http://www.w3.org/TR/WCAG20-TECHS/G139.html ",20 +"MDL-30852","12/21/2011 04:46:36","user report grade view has inaccessible table","The table used to display the grades in the ""user report"" grade view is a complex data table and thus needs to have headers explicitly attached to the correct data cells. By complex data table I mean it does not have a single set of headers across either the rows and/or columns. For WebAIM's example of a simple data table, view ""The scope attribute"" at http://webaim.org/techniques/tables/data#headers. For the correct way to implement complex data tables, view WebAIM's ""The headers and id attributes"" at http://webaim.org/techniques/tables/data#id",8 +"MDL-30895","12/23/2011 04:43:57","provide easier chat reading for screen reader users in accessible chat activity","While the accessible version of the Chat activity is accessible, it could be more usable. The way to navigate the discussion is a bit cumbersome to listen to for screen reader users because of the use of definition lists. It might be better to store the chat messages in a table with three columns. Column one would be a header column and include the poster's name. Column 2 would be the message. Column 3 would be the time stamp. This would allow screen reader users to simply navigate up and down the second column and easily hear the most pertinent information - the person's name and their message. The current definition lists, while semantically correct, are quite verbose and cumbersome to navigate for screen reader users.",13 +"MDL-31089","01/10/2012 11:59:58","New posts listing on 'My Moodle' ignores groups.","Students are seeing 'x posts since last login' notifications under 'course overview' in My Moodle even if the posts belong to groups that they do not have access to. Presumably, students should only get that notification if there are new posts that they are able to see. *Replication steps:* # Create a course with a forum that is set to 'separate groups'. # Create two groups and enrol students into both. # Post something on one group's forum. # Log in as a student in the other group and see '1 post since last login' message under the subject in 'course overview'.",40 +"MDL-31356","01/25/2012 06:23:46","IMS Enterprise enrol plugin added features","I've added the following features to the IMS Enterprise enrol plugin: Ability to update a course Full Name Ability to update a course Short Name Ability to create nested categories during course creation Ability to update a user record (all fields that the plugin already knew about except username) Ability to set/update an authentication type for a user (during creation and updates) I've added options in the settings/config area for this plugin to turn on/off course and user updates, and to set the separator character for nested categories. ",40 +"MDL-31410","01/30/2012 06:32:30","PayPal IPN Script exposed to message_send() failure","The below issue includes the resolution. It merely needs to be marked as fixed and merged in to the main development branch. The ipn.php script, that is a part of the Paypal enrolment method, makes calls to a function ""message_send"" that can cause the entire PayPal enrolment method to fail. The ipn script is called by PayPal when a payment has been processed. Paypal calls the script and passes various tokens regarding the transaction. The ipn script: 1) Opens a handle for the paypal connection 2) Evaluates the received tokens and validates them 3) Enrols a student accordingly 4) Notifies the student, instructors & admins via a call to ""message_send()"" 5) Closes the connection from paypal Various people have been reporting that their paypal enrolments work fine for a while, but they start getting these IPN failure warning messages from Paypal. In their IPN history in Paypal, they see a list of failed transactions where the server (moodle) response was a 404. What's happening for these people, is the 4th step above is failing. The ipn script dies as a product of message_send() failing and the PHP server process would seem to time out and cause the web server to return a 404 to paypal. Since step 3 has been completed, end users of moodle are getting what they need from the plugin. However Paypal doesn't tolerate the 404 responses for long and automatically disables IPN messaging after a while - causing paypal enrolments to fail entirely. The solution I'm proposing is really simple. I've modified ipn.php to use a wrapper function for message_send that puts the call in try-catch block. This insulates the execution of ipn.php from whatever message_send failures ruining the whole experience. I believe resolving the issue in message_send is another matter (and may merely be a misconfiguration thing - though myself and others do have systems that send us emails successfully, guess those situations aren't depending on the same function). I've attached my modified version of ipn.php below. I hope it is immediately merged in to the main development branch as this is probably affecting even more people than have been complaining about it. This issue has been observed by me personally across a wide range of 2.x Moodle installations. I've avoided fixing it myself and have just run on weekly builds hoping someone else would fix it. But push came to shove thus I fixed it myself.",3 +"MDL-31501","02/04/2012 21:42:56","New session infrastructure - file, database and memcached storage ","The OU finds memcache for session handling to be important for performance. Here is our code to be commented on, and hopefully, if good enough, added to core. Edit: This ticket has been highjacked for memcached session handler instead of memcache.",100 +"MDL-31560","02/09/2012 02:06:06","New message_send API is incapable of sending notfications from the $CFG->noreplyaddress.","The old email_to_user API could do this, and we need to be able to do this in many places in the code that currently use email_to_user, and which should be updated to message_send in future. Please extend the API to make this possible. The old system was able to set a fake name to go beside the $CFG->noreplyaddress, so for example you might get emails from * Shy User - for example when a forum poster has decided they want to keep their email private; or * Quiz system - for emails generated in code. I think both these use-cases are important, and so need to be implemented in the API, but from what I can see, this will be hard because: * messages can hang around for some time in the message_working table - that is, there is no guarantee that messages are sent synchronously - it is up to the message output plugins. * The from address in the message table is stored as a userid in a NOT NULL DEFAULT 0 column. Note that this issue is different from MDL-6796.",8 +"MDL-31597","02/12/2012 03:54:03","In User Report, Weights should not be displayed as a percentage","When you display weights for grade items in the User Report in the Grade Book, they are displayed as percentages. This is incorrect - they are not percentages, nor are they used as percentages in aggregations In Settings -> Grade administration -> Course grade settings under 'User Report' set 'Show weightings' to 'Show'. Then assign some weights to grade items. They are shown with a '%' following them.",13 +"MDL-31625","02/14/2012 11:56:47","Overfilling DB entries with a replace causes error","If a column is at the constrained limit like mdl_log - url, then if you replace it with a new url larger, that the search url will fail. {noformat} Error writing to database More information about this error Debug info: ERROR: value too long for type character varying(100) UPDATE mdl_log SET url = REPLACE(url, $1, $2) [array ( 0 => 'http://localhost/moodle', 1 => 'http://localhost/moodle21', )] Stack trace: line 397 of /lib/dml/moodle_database.php: dml_write_exception thrown line 232 of /lib/dml/pgsql_native_moodle_database.php: call to moodle_database->query_end() line 596 of /lib/dml/pgsql_native_moodle_database.php: call to pgsql_native_moodle_database->query_end() line 6281 of /lib/adminlib.php: call to pgsql_native_moodle_database->execute() line 47 of /admin/replace.php: call to db_replace() {noformat} Jason Ilicic and I have made some fixes to the db_replace() function to fix database issues when running it. - Running the replace command on fields that don't have the search url in it. -- In PostgreSQL, update creates another row and tags the old row was re-usable but effectively doubling the Database size. - Replacing a URL that is greater than original and making the column larger that DB constraints. -- If column is 100 chars (mdl_log - url) and data is 100 chars, an update will fail if replace url is greater that search url. - Replace the search url if the column is equal or greater that the size of the search url.",13 +"MDL-31776","02/25/2012 20:43:02","Additional name fields, to allow Asian languages to flexibly display user names in Chinese characters, local phonetic system or Romanization","h3. Alternate name fields *This is a proposal on behalf of The Moodle Association of Japan (http://moodlejapan.org). We are willing to work closely with Moodle HQ on this improvement and help by providing some funding for its development.* The standard Moodle has only two fields for names ""firstname"" and ""lastname"". In countries that use a different writing system, this means that two sets of names need to be displayed, their name in the local writing system and their name in Romanization. Moodle needs a way to input both types of names, and for both the individual and the administrator (and perhaps at the course level) to determine which names appear in the various Moodle contexts. *An ideal configuration* I propose three additional fields: *surnamephon givenphon alternatename* For standard English and European usage, these would be ignored, but for Japanese, Chinese, Korean and perhaps other writing systems such as Thai, the various Indian languages and Arabic. Possible entries would look like this: || ||lastname||firstname||lastphon||firstphon||Alternate|| |Japanese|佐藤|宏|サトウ|ヒロシ|Satou Hiroshi| |Korean|李 |奎報| 이|규보|Yi Gyubo| |Chinese|陳|美和|ㄔㄣ|ㄇㄟㄏㄨㄚ|Chen MeiHua| The site administrator would select how the $FULLNAME variable would appear. For Japanese, for example, the administrator might select lastname + firstname + alternate so that the students' names would appear in Kanji, but with the Romanization of it following the Kanji. This would allow everyone to know how the name should be pronounced. (Even Japanese need this since there are alternate pronunciations for Kanji. ""神部"" for example, could be read as ""Kamibe"" or ""Kambe"" depending on the preference of the user's family.) Any combination of the above could also be selected as the default for user names that appear in various tables. If the selected fields for tables is one of the Asian phonetic fields, then rather than the standard alphabet display for filtering the list by first name and last name, a similar selection display would appear for the selected alphabetic system. For Chinese, a selection would also need to be made for the phonetic system to use. Taiwan uses the ""BoPoMoFo"" (Zhuyin) system, while mainland China uses the Pinyin system. *Student ID Display* For many Asian languages, another problem not encountered so much in the West is people with identical names. This, plus the fact that some of the languages (namely Japanese and Chinese) have no convenient method for ordering names in Chinese characters, means that most schools rely on the student ID for ordering and identifying students rather than (or in addition to) their names. Thus, there should also be an option in the site set-up selecting the StudentID field to be displayed to the left of names on various listings such as the grade book, assignment evaluation, etc. *Complexity & coding time:* This problem is quite complex since it involves modifying core code in perhaps 50-100 files that do database I/O, table displays, preference selections, etc. and would need to be done in close coordination with Moodle Headquarters. *Who would benefit from this improvement?:* Probably every institution in Asia that has staff who do not read the local language need to be able to display names in both the local language and Roman letters. Various, rather unsatisfactory ad hoc solutions are currently used but a permanent, more elegant solution is urgently needed. ",100 +"MDL-31830","03/01/2012 06:17:04","Replacement for the course and category management pages","This issue has been created to look at a possible replacement for the course and category management pages within Moodle. The management system we currently have is getting pretty antiquated and could really do with a make over and could be greatly streamlined to get all of the desired/common features onto fewer pages. It would also be great if the process of adding, moving and deleting categories could be simplified and likely JS enhancement could help this (think AJAX loading and drag + drop).",100 +"MDL-31989","03/11/2012 19:51:49","Global Search 2","Global Search is currently removed from Moodle 2.2. As part of GSoC '13 project, I've re-written Tomasz Muras's Global Search implementation for the current 2.6 (dev) master branch. You may view the demo and play with it here: http://global-search.jmuras.com/ ( Username:search_admin Password: Search_admin1 ) The docs are here: http://docs.moodle.org/dev/Global_search",20 +"MDL-32275","03/30/2012 23:41:20","enrol/users.php shows last access to the platform but not last access to the course","The view enrol/users.php is course specific as it shows which users are enrolled in the course. Nevertheless, the field last access shows the time when a user last accessed the platform although he never accessed the course or last course access was much earlier. One expects that the field tells when a user last accessed the course.",8 +"MDL-32450","04/16/2012 04:54:02","DragMath GPL issue","DragMath jar (DragMath.jar) file is distributed with Moodle but there is no source code available. The same goes for all jars under lib/dragmath/applet/lib.",8 +"MDL-32570","04/21/2012 05:36:53","Deleting ""Miscellaneous"" category broke the ability to use IMS Enterprise to create courses","We deleted the ""miscellaneous"" category in Moodle 2.1 and ran our IMS Enterprise script. No courses were created. The incident sounds similar to http://tracker.moodle.org/browse/MDL-21470 and this posting http://moodle.org/mod/forum/discuss.php?d=200639 If we remove the one section in the script that is really a term, but has the same tag as a course with no category specified, then all of the other courses are created just fine. When we created the ""miscellaneous"" category again then the script runs without a problem. An empty course with the name ""Spring 2012"" (which is the name of our category) is created in the ""Miscellaneous"" category. The real courses are then created in the ""Spring 2012"" category. I don't know if it matters but we are on PHP Version 5.3.5",2 +"MDL-32592","04/23/2012 22:13:11","Category Undefined in IMS Enterprise","Hi At line 396 in enrol/imsenterprise/lib.php the script checks if the category-string is longer than 0. However, if the category is empty this will and does result in an error. Notice: Undefined property: stdClass::$category in /workspace/moodle2.0/enrol/imsenterprise/lib.php on line 396. It is not an serious matter, but a small bug which is easily fixed by adding a different if statement: if(!empty($group->category)). I can provide a patch if necessarily. Best regards Henrik ",2 +"MDL-32746","05/03/2012 22:41:18","User login - trigger event","Would it be possible to add a user login event to the events api. The event could be triggered in complete_user_login() function in moodlelib.php: events_trigger('user_login', $USER); ",3 +"MDL-32862","05/09/2012 10:21:07","Links to some 1.9 resource types break after upgrade to 2.2 followed by backup and restore","Steps to reproduce: 1. Create a Moodle 1.9 course with a resource of the following type: URL, text page, web page, or directory 2. In a topic of the course (or other wysiwyg-editable text in the course), create a link to your resource 3. Upgrade your Moodle instance to Moodle 2.2 4. At this point, you'll find that the link still works. It will point to mod/resource/view.php but will redirect to the correct Moodle 2.2 URL such as mod/page/view.php 5. Create a backup file of the course 6. Restore the backup file into a new course Result: The link in the restored course will not work. It will point to mod/resource/view.php, but now the page will show you the error message ""Invalid course module ID"".",13 +"MDL-32917","05/10/2012 22:23:08","Upgrade dateselector to use YUI3 calendar module","The dateselector in lib/form/yui/dateselector/dateselector.js is still using the YUI2 calendar. We should be able to convert this to yui3-calendar relatively easily.",13 +"MDL-33343","05/25/2012 11:02:16","Unable to create a new page in wiki","This problem happened on partners website (running latest 2.2), although I can not reproduce it on my computer. When attempting to create a new page in wiki, the following error occurs: {code} Default exception handler: Error writing to database Debug: Duplicate entry '1-0-0' for key 'wikisubw_wikgrouse_uix' INSERT INTO wiki_subwikis (wikiid,groupid,userid) VALUES(?,?,?) [array (\n 0 => '1',\n 1 => '0',\n 2 => '0',\n)] * line 397 of /lib/dml/moodle_database.php: dml_write_exception thrown * line 893 of /lib/dml/mysqli_native_moodle_database.php: call to moodle_database->query_end() * line 935 of /lib/dml/mysqli_native_moodle_database.php: call to mysqli_native_moodle_database->insert_record_raw() * line 104 of /mod/wiki/locallib.php: call to mysqli_native_moodle_database->insert_record() * line 950 of /mod/wiki/pagelib.php: call to wiki_add_subwiki() * line 115 of /mod/wiki/create.php: call to page_wiki_create->create_page() , referer: http://partners.moodle.com/mod/wiki/view.php?id=38 {code}",5 +"MDL-33600","06/08/2012 15:04:13","There is no checkbox to control sending feedback when grading an assignment","Previously there was a checkbox that gave a marker the option to send feedback (or not) after grading an assignment. This checkbox no longer appears. To be honest, I don't think this option is necessary, but I'm recording its absence here for the sake of consistency.",8 +"MDL-33618","06/09/2012 03:35:29","A way to hide messages that were configured to never be sent","A user can view all messages sent to him/her via Recent Notifications under My Profile > Messages. Even messages that the user has configured to not receive or the admin as forced that all users should not receive. There should be a way to suppress messages that where never actually delivered to the user.",13 +"MDL-33671","06/12/2012 16:33:20","Add ability to bulk delete files in ""My private files"" repository","Need a bulk delete files in ""My private files"" repository See this discussion: http://moodle.org/mod/forum/discuss.php?d=204310",3 +"MDL-33744","06/14/2012 22:40:20","Cloze marks a correct numeric answer as a wrong one while using a comma as a decimal separator","Hi, i created a simple demonstration of this bug. This cloze question: {1:NUMERICAL:=1.3:0.1} should have the correct answer ""1.3"". But when somebody types 1,3 then the answer is marked wrong, but it gives you full mark. See the attached screenshot for better explanation. Thanks",3 +"MDL-34055","06/27/2012 17:47:59","Database function for fast bulk inserts","When inserting a very large number of records, insert_record() can be quite slow (a few hundred ms per insert). I've done some testing and found that it's possible to get ~100x performance boost by bundling multiple inserts into one query using the syntax: {{INSERT INTO table (field1, field2, field3) VALUES (a1, a2, a3),(b1, b2, b3),(c1, c2, c3),...}} I've written a generic function to do bulk inserts: {quote} Insert multiple records into a table using batch insert syntax for speed}} @param string $table The database table to be inserted into @param iterator $iterator An iterable object (such as moodle_recordset or array) containing objects to be inserted into $table @return true @throws dml_exception if error public function insert_records_via_batch($table, $iterator) {} {quote} The function builds the query by adding records from the iterator until it reaches either the maximum query length or maximum record count (both predefined constants), then it does an insert and starts building a fresh query. By accepting an iterator you can pass in a whole array, or a recordset (to avoid storing all the data to be inserted in memory). Although it works in simple cases I'm finding that there are quite a few subtleties in the depths of dmllib and to make it work with all field types and databases I think some core dml changes might be needed. I'm wondering if there would be any interest in getting this into core? ",8 +"MDL-34182","07/05/2012 10:40:51","Invalid JSON output on filepicker when repository plugins output invalid content","I have just installed MOODLE V2.3 and have tried to upload and restore my backup files from MOODLE V1.9.18. When I select a Small backup file it run ok from the file picker but when I select a larger one say 25Megs using the File Picker then an Error Dialogue Box comes up informing me of the Invalid JSON Script. I turned on the Debugger and found the following script message; ---------------------------------------------------------------------------------------- Invalid JSON string Fatal error: Allowed memory size of 100663296 bytes exhausted (tried to allocate 85462399 bytes) in /home/souther9/public_html/lib/filelib.php on line 3066 ---------------------------------------------------------------------------------------- When I checked the code it displays the following so I am not sure where to go to next; _________________________________________________________________________________________________________________ // create curl instance $curl = curl_init($url); $options['url'] = $url; $this->apply_opt($curl, $options); if ($this->cache && $ret = $this->cache->get($this->options)) { return $ret; } else { $ret = curl_exec($curl); if ($this->cache) { $this->cache->set($this->options, $ret); } } $this->info = curl_getinfo($curl); $this->error = curl_error($curl); if ($this->debug){ echo '

Return Data

'; var_dump($ret); echo '

Info

'; var_dump($this->info); echo '

Error

'; var_dump($this->error); } curl_close($curl); if (empty($this->error)){ return $ret; } else { return $this->error; // exception is not ajax friendly //throw new moodle_exception($this->error, 'curl'); } } ___________________________________________________________________________________ Can anyone help me get this sorted out please I have tried the forums and looked through some of the other issues but to no help found. Thanks Jim Kersting",8 +"MDL-34209","07/07/2012 02:11:20","Moving sections by drag and drop causes the sections to be reordered","When I move the sections in my course, they will sometimes reorder randomly. What I did: 1. Created a bunch of sections (I have 15) 2. Added content to some of the sections 3. Added a section to the end using the plus icon 4. Tried to drag and drop it to a location higher up on the page What I expected: The section to drop into the new location. What actually happens: The section drops into a random location and the other sections reorder randomly as well. This happens about every 4th time I try to reorder a section. ",20 +"MDL-34248","07/10/2012 19:40:43","Restoring a course fails at mdl_log insert","When i tried to restore a course in a new course, the following message occured (log files): {noformat} Default exception handler: \xce\xa3\xcf\x86\xce\xac\xce\xbb\xce\xbc\xce\xb1 \xce\xb5\xce\xb3\xce\xb3\xcf\x81\xce\xb1\xcf\x86\xce\xae\xcf\x82 \xcf\x83\xcf\x84\xce\xb7 \xce\xb2\xce\xac\xcf\x83\xce\xb7 \xce\xb4\xce\xb5\xce\xb4\xce\xbf\xce\xbc\xce\xad\xce\xbd\xcf\x89\xce\xbd Debug: Data too long for column 'url' at row 1 INSERT INTO mdl_log (time,userid,ip,module,action,url,info,course,cmid) VALUES(?,?,?,?,?,?,?,?,?) [array ( 0 => 1321027807, 1 => '79', 2 => '10.10.10.1', 3 => 'forum', 4 => 'search', 5 => 'search.php?id=123&search=%CE%99%CF%...', 6 => '\xce\x99\xcf\x83\xcf\x84\xce\xbf\xcf\x81\xce\xaf\xce\xb1 \xce\x95\xce\xbb\xce\xbb\xce\xb7\xce\xbd\xce\xb9\xce\xba\xce\xbf\xcf\x8d \xce\x95\xce\xb8\xce\xbd\xce\xbf\xcf\x85\xcf\x82', 7 => 123, 8 => 0, )] * line 397 of /lib/dml/moodle_database.php: dml_write_exception thrown * line 893 of /lib/dml/mysqli_native_moodle_database.php: call to moodle_database->query_end() * line 935 of /lib/dml/mysqli_native_moodle_database.php: call to mysqli_native_moodle_database->insert_record_raw() * line 1974 of /backup/moodle2/restore_stepslib.php: call to mysqli_native_moodle_database->insert_record() * line 131 of /backup/util/plan/restore_structure_step.class.php: call to restore_course_logs_structure_step->process_log() * line 103 of /backup/util/helper/restore_structure_parser_processor.class.php: call to restore_structure_step->process() * line 125 of /backup/util/xml/parser/processors/grouped_parser_processor.class.php: call to restore_structure_parser_processor->dispatch_chunk() * line 91 of /backup/util/helper/restore_structure_parser_processor.class.php: call to grouped_parser_processor->postprocess_chunk() * line 148 of /backup/util/xml/parser/processors/simplified_parser_processor.class.php: call to restore_structure_parser_processor->postprocess_chunk() * line 92 of /backup/util/xml/parser/processors/progressive_parser_processor.class.php: call to simplified_parser_processor->process_chunk() * line 169 of /backup/util/xml/parser/progressive_parser.class.php: call to progressive_parser_processor->receive_chunk() * line 253 of /backup/util/xml/parser/progressive_parser.class.php: call to progressive_parser->publish() * line ? of unknownfile: call to progressive_parser->end_tag() * line 158 of /backup/util/xml/parser/progressive_parser.class.php: call to xml_parse() * line 137 of /backup/util/xml/parser/progressive_parser.class.php: call to progressive_parser->parse() * line 105 of /backup/util/plan/restore_structure_step.class.php: call to progressive_parser->process() * line 153 of /backup/util/plan/base_task.class.php: call to restore_structure_step->execute() * line 148 of /backup/util/plan/base_plan.class.php: call to base_task->execute() * line 157 of /backup/util/plan/restore_plan.class.php: call to base_plan->execute() * line 315 of /backup/controller/restore_controller.class.php: call to restore_plan->execute() * line 147 of /backup/util/ui/restore_ui.class.php: call to restore_controller->execute_plan() * line 46 of /backup/restore.php: call to restore_ui->execute() , referer: http://server_url/backup/restore.php [Tue Jul 10 13:15:51 2012] [error] [client xxx.xxx.xxx.xxx] Potential coding error - existing temptables found when disposing database. Must be dropped!, referer: http://server url/backup/restore.php {noformat} ",13 +"MDL-34321","07/13/2012 22:47:08","Assignment only partially disappears when Teacher using role switch to Student submits assignment ","When using Assignment: Advanced Uploading of File, I switched my role to Student (I have, normally, Course Creator and Teacher roles). I submitted an assignment as a test. I usually use a dedicated fake student account for this task, but did not at this point. I successfully uploaded an assignment in this state. Because of the assignment settings, I (as a student) am not able to modify the assignment after it was 'sent for marking.' However, now all teachers see that there's ""1 submitted assignment"" yet my submission appears no where else. When clicking ""View 1 submitted assignment,"" for instance, the list is empty. This is a minor inconvenience, and nothing more. I checked and a regular student assignment submission appears as normal. *To test:* # Create an Assignment: Advanced Uploading of Files # Switch role to Student. # Submit some files and 'send for marking' # Return to normal role # Click ""View 1 submitted assignment."" Verify assignment does not appear. ",8 +"MDL-34356","07/16/2012 19:06:35","Allow the chooser dialogue to submit values for the radio button","This doesn't affect the activity chooser, but can affect others. When submitting the chooser dialogue, we disable a number of elements to prevent duplicate submissions. These include: * submit button * radio buttons Browsers don't submit the values of disabled elements though, and as a result, the chooser doesn't actually offer its selection. Since we ideally should disable the radio buttons, we need instead to create a new hidden field and set it's name and value to that of the radio button such that the value is sent in the request. This doesn't affect the Activity Chooser as that chooser already overrides this default functionality to set a value custom to the intended target (jumpurl).",3 +"MDL-34397","07/19/2012 12:07:31","Develop course structure caching","The main goal of this change is *to move the content of the fields course.modinfo and course.sectioncache to MUC*. More complete list of changes: - classes course_modinfo, cm_info, section_cache no longer extend stdClass and all properties are read-only. No more deprecated but still used everywhere public properties - all properties have getters and you can legally use either $modinfo->cms or $modinfo->get_cms() - classes cm_info and section_cache no longer calculate any data on initialisation and only calculate it when it is needed (saves extra DB queries when conditional availability is enabled). - database fields course.modinfo and course.sectioncache are removed, new application cache core/coursemodinfo stores this information. - course cache now additionally stores some fields from 'course' table such as format, enableavailability, groupmode, etc. that are necessary when calculating availability or additional section fields - new field course.cacherev added to table course and it is incremented every time the course cache is reset. Object in cache stores the value of cacherev at the moment when cache was built. This allows to avoid race conditions when course cache was simultaneously reset and rebuild by different people and became corrupt. *Main changes for users* - less db queries, less RAM usage on heavy pages such as ""My courses"" - much less probability of corrupt course cache (hopefully none at all) - ""Purge all caches"" purges course caches as well - Every core upgrade purges course caches *Notes for developers* - Do not access removed fields course.modinfo and course.sectioncache - If you need the raw user-independed information - call get_fast_modinfo($courseorid, -1) - Do not try to overwrite/append properties of course_modinfo or cm_info - do not hint any of those classes as stdClass in function arguments or you'll hit fatal error - Enjoy IDE hints for the properties and methods in modinfo classes - When calling get_fast_modinfo() for the list of courses make sure to retrieve/pass field cacherev. Otherwise an extra db query will be made. Not necessary when calling get_fast_modinfo() for current course. Most of core API functions returning list of courses will return you this field anyway.",100 +"MDL-34426","07/20/2012 12:46:00","Port Google/Facebook Oauth2 plugin into core","Port http://moodle.org/plugins/view.php?plugin=auth_googleoauth2 to core Specification: http://docs.moodle.org/dev/Oauth2_authentication",20 +"MDL-34432","07/20/2012 15:59:11","Assignment -teachers can no longer comment inline on online text","In 1.9 there was an option ""comment inline"" which copied the students' online text assignment into the feedback box, allowing the teacher to comment directly onto their text- striking through, highlighting in red, etc, in addition to feedback comments. See forum thread here: http://moodle.org/mod/forum/discuss.php?d=207430 There doesn't seem a way to do this with the online text version of the new assignment module (or if it is available, it is very difficult to find!) All references to ""comment inline"" in the tracker and QA testing seem to interpret the term differently but I notice in one test MDLQA-1872 Theresa Gibbison actually mentions she does not see the students's submission in the box; yet the test is passed. Many teachers like the 1.9 ""comment inline"" facility as it helps replicate marking in exercise books or on paper. How to reproduce: (Compare & Contrast) In 1.9 1)Create an online text assignment and ensure ""comment inline"" is checked 2)Log in with a student account and type in some text 3)Log back in with teacher account and verify that the student's text is included in your feedback box so you could if wished edit/highlight their words In 2.3: 1)Create a new assignment 2)Ensure ""online text"" is set to Yes and ""Feedback comments"" are set to Yes 3) Log in with student account and type some text 4) Log back in as a teacher and verify the students' text does NOT appear in feedback box; therefore you can't scribble all over it like in exercise books :(",8 +"MDL-34434","07/20/2012 16:21:53","META: Collect together deprecated code changes for Moodle 2.6","There are a number of parts of the Moodle codebase that have been marked as deprecated as a warning to developers not to use these functions as they will be removed in future. Many have a deadline of 2.6. Each of these deprecated functions, especially those in Moodle core code, should have an MDL issue associated with it. In order to time the removal of these deprecated function issues and not lose sight of them, this issue will be used to collect them together.",40 +"MDL-34454","07/23/2012 14:02:20","remove message_get_my_providers() from lib/messagelib.php","message_get_my_providers() has been deprecated since 2.1 and can be removed any time after 2.5",1 +"MDL-34472","07/23/2012 14:54:13","Add deprecate warning to get_context_instance() function","Add deprecate warning to get_context_instance() function",3 +"MDL-34496","07/24/2012 06:13:32","issue(s) with custom block regions","There are some issues with custom block regions which have been identified. The problems encountered so far are when using Aardvark-Postit Version: 2012071202(DRAG-N-DROP), Aerie and Rocket themes. After blocks have been successfully created and then moved to the new block-region areas, using AJAX Drag-n-Drop, the page layout no longer appears to work. This behaviour seems to be connected to body classes generated by the dock.js. The only way to be sure of all the problems is to create a theme that is as simple as possible only introducing 2 custom block regions (4 block regions in total) and enabling the dock.",20 +"MDL-34587","07/27/2012 00:50:39","Filenames w/ Spaces Generating incorrect SHA1","I have encountered two different places in which files uploaded w/ spaces in their filenames cause an incorrect SHA1 hash to be generated, resulting in a ""missing"" file. There are probably additional places in which this bug exists but the two functions that I have found thus far are: resource_pluginfile page_pluginfile ",40 +"MDL-34684","08/01/2012 22:45:23","Adding a new health check to detect incorrect category path order and/or missing parent categories","Some sites have corrupted hierarchies between course categories, in course_categories->parent field or in course_categories->path. The cause of this issue is not present in the current maintained versions and not all sites are affected by it, so instead of adding an upgrade process we add an extra health check process to explain to the users how to fix the problem, proposing them a sql query to run into the database. *Edited summary and description* -------------------------------------------------------------- *Original description* upgraded from moodle.2.1.1 to moodle.2.2.4 and then finally to Moodle 2.3.1+ (Build: 20120726) PHP PHP 5.3.2-1ubuntu4.17 MySQL 5.1.63-0ubuntu0.10.04.1-log Ubuntu 10.04.4 LTS When I click on a course category it gives me this error (with full debug on): {noformat} Notice: Undefined index: 5 in /var/www/moodle/lib/navigationlib.php on line 1796 Notice: Trying to get property of non-object in /var/www/moodle/lib/navigationlib.php on line 1797 Notice: Trying to get property of non-object in /var/www/moodle/lib/navigationlib.php on line 1801 Coding error detected, it must be fixed by a programmer: Category path order is incorrect and/or there are missing categories Debug info: Error code: codingerror Stack trace: line 1809 of /lib/navigationlib.php: coding_exception thrown line 1195 of /lib/navigationlib.php: call to global_navigation->load_all_categories() line 3039 of /lib/navigationlib.php: call to global_navigation->initialise() line 781 of /lib/pagelib.php: call to navbar->has_items() line 3 of /theme/aardvark_postit/layout/default.php: call to moodle_page->has_navbar() line 765 of /lib/outputrenderers.php: call to include() line 712 of /lib/outputrenderers.php: call to core_renderer->render_page_layout() line ? of unknownfile: call to core_renderer->header() line 1445 of /lib/setuplib.php: call to call_user_func_array() line ? of unknownfile: call to bootstrap_renderer->__call() line 199 of /course/category.php: call to bootstrap_renderer->header() {noformat} As an admin I can go to the course categories with no errors. But when I'm not logged in, I can't. Or other roles. This fix script doesn't change anything: {code} set_field('backup_ids_temp', 'itemname', $itemname . 'final', array('id' => $annotation->id)); call. Adding traces here shows it ticking along fine but then just stopping. Multiple attempts to backup the same course (after waiting for cron to clear out temp stuff) ended up failing at the same point. Tracing deeper into the set_field function, it calls the sqlsrv do_query, To troubleshoot, I added a query timeout as follows (none was specified originally) In sqlsrv_native_moodle_database function do_query $result = sqlsrv_query($this->sqlsrv, $sql,array(),array('QueryTimeout'=>10)); the backups now return with error Debug info: SQLState: HYT00
Error Code: 0
Message: [Microsoft][SQL Server Native Client 10.0]Query timeout expired
UPDATE #mdl_backup_ids_temp SET itemname = N'filefinal' WHERE id = '1366' [array ( 0 => 'filefinal', 1 => '1366', )] Stack trace: •line 397 of \lib\dml\moodle_database.php: dml_write_exception thrown •line 252 of \lib\dml\sqlsrv_native_moodle_database.php: call to moodle_database->query_end() •line 370 of \lib\dml\sqlsrv_native_moodle_database.php: call to sqlsrv_native_moodle_database->query_end() •line 1098 of \lib\dml\sqlsrv_native_moodle_database.php: call to sqlsrv_native_moodle_database->do_query() •line 1475 of \lib\dml\moodle_database.php: call to sqlsrv_native_moodle_database->set_field_select() •line 146 of \backup\util\dbops\backup_structure_dbops.class.php: call to moodle_database->set_field() •line 1338 of \backup\moodle2\backup_stepslib.php: call to backup_structure_dbops::move_annotations_to_final() •line 34 of \backup\util\plan\backup_execution_step.class.php: call to move_info ref_annotations_to_final->define_execution() •line 153 of \backup\util\plan\base_task.class.php: call to backup_execution_step->execute() •line 148 of \backup\util\plan\base_plan.class.php: call to base_task->execute() •line 105 of \backup\util\plan\backup_plan.class.php: call to base_plan->execute() •line 296 of \backup\controller\backup_controller.class.php: call to backup_plan->execute() •line 111 of \backup\util\ui\backup_ui.class.php: call to backup_controller->execute_plan() •line 89 of \backup\backup.php: call to backup_ui->execute() Varying the timeout had no effect; it failed at the same place, just would take longer... So adding the timeout here gets the backup process to fail after the timeout (rather than waiting for a fastcgi timeout). It looks like mssql just not responding. I wanted to see what was happening with the tables, which is hard for mssql and temp tables, since they're session based. I don't have access to the moodle db sessions' temp tables from my db admin tool. To get around this, I modified \backup\util\dbops\backup_controller_dbops_class.php (around line 141&150), so that a real table was created/deleted, instead of using MSSQLs session based temp tables (just removed ""_temp_"" in the calls to dbman, ie $dbman->create_temp_table($xmldb_table); becomes $dbman->create_table($xmldb_table); and around 150 $dbman->drop_temp_table($table); becomes $dbman->drop_table($table); There's a similar fix neccessary in \backup\util\dbops\restore_controller_dbops_class.php, line 109, With this change, the backup and restore work ok. My hypothesis is that at some point during the long backup, another connection gets made to mssql; since temp tables are associated with connections, the link to the original temp table gets lost and the data isn't available. Of course this doesn't explain why the sqlsrv call ust times out rather than returning an error. We've actually been using the system with this little change, but it's not really satisfactory -- the problem, of course, is that only one backup/restore can be run on the system at any one time because there's just the one temp table; and multiple backups just conflict, requiring the temp table we created to be dropped. Some related posts http://moodle.org/mod/forum/discuss.php?d=177822 (I posted this early) Possibly related http://tracker.moodle.org/browse/MDL-28162 other commenters on this issue were on MSSQL ",40 +"MDL-35009","08/22/2012 16:32:15","Deprecate get_context_instance_by_id() ","Deprecate get_context_instance_by_id() As discussed in MDL-34472 this function's usage was removed from core in 2.4 . But since this function was used everywhere, the deprecation warning was not added in 2.4 . The warning should be added to the function before 2.6, in this issue. Later the function definition should be removed from core in 2.8 Thanks",1 +"MDL-35024","08/23/2012 14:45:17","META: Collect together deprecated code changes for Moodle 2.7","There are a number of parts of the Moodle codebase that have been marked as deprecated as a warning to developers not to use these functions as they will be removed in future. Many have a deadline of 2.7. Each of these deprecated functions, especially those in Moodle core code, should have an MDL issue associated with it. In order to time the removal of these deprecated function issues and not lose sight of them, this issue will be used to collect them together.",5 +"MDL-35032","08/23/2012 20:55:34","book restore from moodle 1.9: Images are not imported","A linked or embedded image from the course_files in Moodle 1.9 is not converted when restoring a 1.9 backup in moodle 2.3. Reason: https://github.com/moodle/moodle/blob/master/mod/book/backup/moodle1/lib.php The moodle2-xml file is written before the images are migrated and so the @FILEPHP@ Links are not replaced by the @@PLUGINFILE@@ Links. $this->write_xml('chapter', $data, array('/chapter/id')); should be executed at the end. {code} public function process_book_chapters($data) { $this->write_xml('chapter', $data, array('/chapter/id')); // convert chapter files $this->fileman->filearea = 'chapter'; $this->fileman->itemid = $data['id']; $data['content'] = moodle1_converter::migrate_referenced_files($data['content'], $this->fileman); } {code}",8 +"MDL-35146","08/30/2012 21:04:24","Restore of wiki fails with unique constraint violation","In a Moodle 2.3.1 that was upgraded from 1.9.x => 2.2.x => 2.3.1, backing up then restoring a course with a particular wiki in it fails with a database error. Although the database has some data related to this wiki, it appears when viewing the wiki in the source course that it has no pages. The wiki was created before the upgrade from 1.9 to 2.3.1. {noformat} Default exception handler: Error writing to database Debug: ERROR: duplicate key value violates unique constraint ""mdl_wikisubw_wikgrouse_uix"" INSERT INTO mdl_wiki_subwikis (groupid,userid,wikiid) VALUES($1,$2,$3) RETURNING id [array ( 'groupid' => 0, 'userid' => 0, 'wikiid' => 2749, )] Error code: dmlwriteexception * line 410 of /lib/dml/moodle_database.php: dml_write_exception thrown * line 239 of /lib/dml/pgsql_native_moodle_database.php: call to moodle_database->query_end() * line 812 of /lib/dml/pgsql_native_moodle_database.php: call to pgsql_native_moodle_database->query_end() * line 864 of /lib/dml/pgsql_native_moodle_database.php: call to pgsql_native_moodle_database->insert_record_raw() * line 80 of /mod/wiki/backup/moodle2/restore_wiki_stepslib.php: call to pgsql_native_moodle_database->insert_record() * line 131 of /backup/util/plan/restore_structure_step.class.php: call to restore_wiki_activity_structure_step->process_wiki_subwiki() * line 103 of /backup/util/helper/restore_structure_parser_processor.class.php: call to restore_structure_step->process() * line 125 of /backup/util/xml/parser/processors/grouped_parser_processor.class.php: call to restore_structure_parser_processor->dispatch_chunk() * line 91 of /backup/util/helper/restore_structure_parser_processor.class.php: call to grouped_parser_processor->postprocess_chunk() * line 148 of /backup/util/xml/parser/processors/simplified_parser_processor.class.php: call to restore_structure_parser_processor->postprocess_chunk() * line 92 of /backup/util/xml/parser/processors/progressive_parser_processor.class.php: call to simplified_parser_processor->process_chunk() * line 169 of /backup/util/xml/parser/progressive_parser.class.php: call to progressive_parser_processor->receive_chunk() * line 212 of /backup/util/xml/parser/progressive_parser.class.php: call to progressive_parser->publish() * line ? of unknownfile: call to progressive_parser->start_tag() * line 158 of /backup/util/xml/parser/progressive_parser.class.php: call to xml_parse() * line 137 of /backup/util/xml/parser/progressive_parser.class.php: call to progressive_parser->parse() * line 105 of /backup/util/plan/restore_structure_step.class.php: call to progressive_parser->process() * line 153 of /backup/util/plan/base_task.class.php: call to restore_structure_step->execute() * line 192 of /backup/moodle2/restore_activity_task.class.php: call to base_task->execute() * line 163 of /backup/util/plan/base_plan.class.php: call to restore_activity_task->execute() * line 157 of /backup/util/plan/restore_plan.class.php: call to base_plan->execute() * line 315 of /backup/controller/restore_controller.class.php: call to restore_plan->execute() ... {noformat} Here are the related records from the db: {noformat} moodle=# select * from mdl_course_modules where id=179212; id | course | module | instance | section | idnumber | added | score | indent | visible | visibleold | groupmode | groupingid | groupmembersonly | completion | completiongradeitemnumber | completionview | completionexpected | availablefrom | availableuntil | showavailability | showdescription --------+--------+--------+----------+---------+----------+------------+-------+--------+---------+------------+-----------+------------+------------------+------------+---------------------------+----------------+--------------------+---------------+----------------+------------------+----------------- 179212 | 4371 | 16 | 2557 | 52394 | | 1327672348 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | | 0 | 0 | 0 | 0 | 0 | 0 moodle=# select * from mdl_wiki where id=2557; id | course | name | timemodified | intro | introformat | firstpagetitle | wikimode | defaultformat | forceformat | editbegin | editend | timecreated ------+--------+------------------------------------------------------------------+--------------+-------------------------------------------------------------------------+-------------+-----------------------------------------+---------------+---------------+-------------+-----------+---------+------------- 2557 | 4371 | anonymized ""Anonymized"" | 1331379009 | Anonymized | 0 | anonymized ""anonymized"" | collaborative | html | 1 | 0 | 0 | 0 moodle=# select * from mdl_wiki_subwikis where wikiid=2557; id | wikiid | groupid | userid ------+--------+---------+-------- 237 | 2557 | 5646 | 0 590 | 2557 | 5649 | 0 650 | 2557 | 5645 | 0 992 | 2557 | 5648 | 0 1557 | 2557 | 5644 | 0 1999 | 2557 | 5647 | 0 2251 | 2557 | 0 | 0 moodle=# select id, subwikiid, 'anonymized' as title, 'anonymized' as cachedcontent, timecreated, timemodified, timerendered, userid, pageviews, readonly from mdl_wiki_pages where subwikiid in (select id from mdl_wiki_subwikis where wikiid=2557); id | subwikiid | title | cachedcontent | timecreated | timemodified | timerendered | userid | pageviews | readonly ------+-----------+------------+---------------+-------------+--------------+--------------+--------+-----------+---------- 6719 | 1557 | anonymized | anonymized | 1327672570 | 1332150929 | 1345290323 | 13020 | 230 | 0 6724 | 1999 | anonymized | anonymized | 1327672984 | 1332460271 | 1345290323 | 13044 | 111 | 0 6723 | 590 | anonymized | anonymized | 1327672870 | 1333543094 | 1345290323 | 6542 | 119 | 0 7290 | 2251 | anonymized | anonymized | 1346323212 | 1346323212 | 1346327547 | 20760 | 8 | 0 6721 | 237 | anonymized | anonymized | 1327672701 | 1331551184 | 1345290323 | 9094 | 117 | 0 6720 | 650 | anonymized | anonymized | 1327672976 | 1334228293 | 1345290323 | 10764 | 94 | 0 6722 | 992 | anonymized | anonymized | 1327672861 | 1332347078 | 1345290323 | 10845 | 140 | 0 {noformat} ",13 +"MDL-35423","09/13/2012 21:23:33","Activity chooser links and toolbox links not correctly created if you don't have a wrapper div called #page-content","The AJAX mod chooser links are not created if you don't have a div#page-content in your theme. The CSS selectors that it's looking for are defined at the start of this file: ""../course/yui/modchooser/modchooser.js"" changing it to: PAGECONTENT : 'body', seems to work and shouldn't impact performance since when used it is narrowed by one of the following: SECTION : 'li.section', SITEMENU : 'div.block_site_main_menu', SITETOPIC : 'div.sitetopic' ",5 +"MDL-35848","10/08/2012 11:28:26","Login Page lacks visible focus path","*Issue* Visible focus path - No focus path is perceivable anywhere in the interface, making it impossible for someone using only the keyboard to see on which part of the interface he is currently on. *Standard Level* WCAG 2 2.4.7 (AA) [] *Impact* Critical *Example Link* [http://demo.moodle.net/] *Test Steps* # Tab through the login page",8 +"MDL-35919","10/10/2012 03:32:28","Add activity and resource link doesn't announce when the modal appears","*Issue* Context changes - Clicking the Add an activity or resource link does not announce to screen readers that a modal has been opened. Guidance - Modal window is not being announced at all to screen reader users. *Standard Level* WCAG 2 3.3.2 (A) [http://www.w3.org/WAI/WCAG20/quickref/#qr-minimize-error-cues] WCAG 2 4.1.2 (A) [http://www.w3.org/WAI/WCAG20/quickref/#qr-ensure-compat-rsv] *Impact* Serious Critical *Example Link* [http://demo.moodle.net/course/view.php?id=625¬ifyeditingon=1] *Test Steps* # Login as a teacher # Navigate to a course # Click the add an activity or resource link with a screen reader on # Notice that nothing tells you that the modal appeared.",8 +"MDL-35922","10/10/2012 05:39:14","Create folder button in file manager does not announce modal opened","*Issue* Context changes - Clicking the create folder link in the file picker does not announce to screen readers that a modal has been opened. Guidance - Modal window is not being announced at all to screen reader users. *Standard Level* WCAG 2 3.3.2 (A) [http://www.w3.org/WAI/WCAG20/quickref/#qr-minimize-error-cues] WCAG 2 4.1.2 (A) [http://www.w3.org/WAI/WCAG20/quickref/#qr-ensure-compat-rsv] *Impact* Serious Critical *Example Link* [http://demo.moodle.net/mod/assign/view.php?id=1778&action=editsubmission] *Test Steps* # Login as a student # Navigate to a course # Click the assignment # Click add submissions # Click the create folder button in the file picker with a screen reader one # Notice nothing is announced to the screen reader",3 +"MDL-35923","10/10/2012 05:43:55","Create folder modal in file manager does not focus on the text input field","*Issue* Context change - When the user activates create folder modal, the focus is not being put in the modal window but is being sent back to the top of the page. Screen reader and keyboard users now have to make their way back to the modal window, only to find out it's impossible to get back in it (and therefore, close it). *Standard Level* WCAG 2 3.2.2 (A) [http://www.w3.org/WAI/WCAG20/quickref/#qr-minimize-error-cues] *Impact* Critical *Example Link* [http://demo.moodle.net/mod/assign/view.php?id=1778&action=editsubmission] *Test Steps* # Login as a student # Navigate to a course # Click the assignment # Click add submissions # Click the create folder button in the file picker with a screen reader one # Notice the screen reader starts reading at the top of the page.",2 +"MDL-35925","10/10/2012 06:15:52","Add... button does not announce modal opened","*Issue* Context changes - Clicking the Add... link in the file picker does not announce to screen readers that a modal has been opened. *Standard Level* WCAG 2 3.3.2 (A) [http://www.w3.org/WAI/WCAG20/quickref/#qr-minimize-error-cues] *Impact* Serious *Example Link* [http://demo.moodle.net/mod/assign/view.php?id=1778&action=editsubmission] *Test Steps* # Login as a student # Navigate to a course # Click the assignment # Click add submissions # Click the Add.. button in the file picker with a screen reader one # Notice nothing is announced to the screen reader",13 +"MDL-35926","10/10/2012 06:17:10","Add.. modal allows tab focus to go outside the modal","*Issue* Context change - When the user activates Add.. modal, the focus is not being put in the modal window but is being sent back to the top of the page. Screen reader and keyboard users now have to make their way back to the modal window, only to find out it's impossible to get back in it (and therefore, close it). *Standard Level* WCAG 2 3.2.2 (A) [http://www.w3.org/WAI/WCAG20/quickref/#qr-minimize-error-cues] *Impact* Critical *Example Link* [http://demo.moodle.net/mod/assign/view.php?id=1778&action=editsubmission] *Test Steps* # Login as a student # Navigate to a course # Click the assignment # Click add submissions # Click the Add... button in the file picker with a screen reader one # Notice the screen reader starts reading at the top of the page.",8 +"MDL-35927","10/10/2012 06:18:12","Add... Modal Error Modal does not announce modal opened","*Issue* Context changes - If an error occurs in the file picker the error modal does not announce to screen readers that a modal has been opened. Guidance - Modal window is not being announced at all to screen reader users. *Standard Level* WCAG 2 3.3.2 (A) [http://www.w3.org/WAI/WCAG20/quickref/#qr-minimize-error-cues] WCAG 2 4.1.2 (A) [http://www.w3.org/WAI/WCAG20/quickref/#qr-ensure-compat-rsv] *Impact* Serious Critical *Example Link* [http://demo.moodle.net/mod/assign/view.php?id=1778&action=editsubmission] *Test Steps* # Login as a student # Navigate to a course # Click the assignment # Click add submissions # Click the Private files button in the file picker with a screen reader on after a user has been logged out. # Notice nothing is announced to the screen reader when the error modal appears",2 +"MDL-35928","10/10/2012 06:20:00","File picker Error modal does not focus on text","*Issue* Context change - When the file pickers displays the error modal, the focus is not being put in the modal window but is being sent back to the top of the page. Screen reader and keyboard users now have to make their way back to the modal window, only to find out it's impossible to get back in it (and therefore, close it). *Standard Level* WCAG 2 3.2.2 (A) [http://www.w3.org/WAI/WCAG20/quickref/#qr-minimize-error-cues] *Impact* Critical *Example Link* [http://demo.moodle.net/mod/assign/view.php?id=1778&action=editsubmission] *Test Steps* # Login as a student # Navigate to a course # Click the assignment # Click add submissions # Click the Private files button in the file picker with a screen reader on after the user has their session time out. # Notice the screen reader starts reading at the top of the page.",3 +"MDL-35930","10/10/2012 06:29:13","Filepicker and file manager view files buttons do not announce change on the page","*Issue* Context changes - When the user clicks the icons in the upper right of the file picker to change the view type of the files (icons, detail and tree) the user is not informed of a change to the page. This also occurs when you are within a file repository after clicking the Add... button Guidance - Modal window is not being announced at all to screen reader users. Standard Level* WCAG 2 3.3.2 (A) [http://www.w3.org/WAI/WCAG20/quickref/#qr-minimize-error-cues] WCAG 2 4.1.2 (A) [http://www.w3.org/WAI/WCAG20/quickref/#qr-ensure-compat-rsv] *Impact* Serious Critical *Example Link* [http://demo.moodle.net/mod/assign/view.php?id=1778&action=editsubmission] *Test Steps* # Login as a student # Navigate to a course # Click the assignment # Click add submissions # Click the tree icon # Notice nothing is announced to the screen reader when the error modal appears",8 +"MDL-35931","10/10/2012 06:32:21","Filepicker selecting a repository does not announce a change in the modal","*Issue* Context changes - When the user selects a repository in the add... modal the user is not informed there is a change in the right hand side of the modal. Standard Level* WCAG 2 3.3.2 (A) [http://www.w3.org/WAI/WCAG20/quickref/#qr-minimize-error-cues] *Impact* Serious *Example Link* [http://demo.moodle.net/mod/assign/view.php?id=1778&action=editsubmission] *Test Steps* # Login as a student # Navigate to a course # Click the assignment # Click add submissions # Click the Add... icon # Click Private files # Notice nothing is announced to the screen reader when the repository changes",8 +"MDL-35933","10/10/2012 07:13:27","File manager file size and number limits are not keyboard accessible","*Issue* Keyboard access - the file size limit and number of files limit in the upper right of the file manager is not part of the tab order and so a user with a screen reader is unable to access it. This means that a visually impaired user will not know how many files they can upload or what the limit is to the file size being uploaded. *Standard Level* WCAG 2 3.3.2 (A) [http://www.w3.org/WAI/WCAG20/quickref/#qr-minimize-error-cues] *Impact* Serious *Example Link* [http://demo.moodle.net/] *Test Steps* # Login as a student # Navigate to a course # Click the assignment # Click add submissions",2 +"MDL-35934","10/10/2012 07:15:15","File manager selecting file does not announce that the file modal opened","*Issue* Context changes - When the user selects a file in the filepicker the user is not informed that the file edit modal has opened. Standard Level* WCAG 2 3.3.2 (A) [http://www.w3.org/WAI/WCAG20/quickref/#qr-minimize-error-cues] *Impact* Serious *Example Link* [http://demo.moodle.net/mod/assign/view.php?id=1778&action=editsubmission] *Test Steps* # Login as a student # Navigate to a course # Click the assignment # Click add submissions # Click Upload a file # Click on the file # Notice nothing is announced to the screen reader when the file edit modal appears",8 +"MDL-35939","10/10/2012 08:19:48","Quiz page title does not tell the user where they are in the quiz","*Issue* Page title - Page title is the Name of the quiz throughout the whole quiz. Page title should reflect which part of the quiz the user is currently on (question x out of y, summary, results, etc.). *Standard Level* WCAG 2 2.4.2 (A) [http://www.w3.org/WAI/WCAG20/quickref/#qr-navigation-mechanisms-title] *Impact* Serious *Example Link* [http://demo.moodle.net/] *Test Steps* # Create a quiz with multiple pages # login as a student # Navigate to course # Click on Quiz # Click attempt quiz button # Answer questions and click next button # Note the Page title on every page is the same",0 +"MDL-35971","10/11/2012 05:34:53","Forum discussion table has no summary","*Issue* Summary attribute - The discussion forum table has no summary explaining what it's about to the user. This summary should also mention that some table cells are merged since users could be confused by the fact that there is no 3rd column being announced for first row. *Standard Level* WCAG 2 1.3.1 (A) [http://www.w3.org/TR/UNDERSTANDING-WCAG20/content-structure-separation-programmatic.html] *Impact* Serious *Example Link* [http://accessibility.mroomstest.net/mod/forum/view.php?id=31] *Test Steps* # Login as user0 # Navigate to the Algrebra 101 # Click Functions and Graphs Discussion Forum # View the source code for the discussions table.",1 +"MDL-35973","10/11/2012 05:42:40","Moodle redirect to new page has no page title (specifically forums)","This is issues was specifically found in the forums create discussion and reply to a post, but the behavior of redirection happens all over Moodle and is a library function. *Issue* Sufficient cues - Once the message is submitted, the confirmation message for posted discussion thread is presented in a new page that has a redirection to another page - this behavior should be reflected into the page title, so screen reader users understand what is going on. Timing Adjustable - When posting a reply to discussion, a page with a message ""Posted successfully - Continue"" is presented. But enough time is not given to user to click on Continue button. The user is redirected to a different page. While using JAWS, this page is not read at all. *Standard Level* WCAG 2 3.3.2 (A) [http://www.w3.org/TR/UNDERSTANDING-WCAG20/minimize-error-cues.html] WCAG 2 2.2.1 (A) [http://www.w3.org/TR/UNDERSTANDING-WCAG20/time-limits-required-behaviors.html] *Impact* Serious Critical *Example Link* [http://accessibility.mroomstest.net/mod/forum/post.php?reply=1] *Test Steps* # Login as user0 # Navigate to the Algebra 101 course # Click on a forum # Click the create a discussion button # Add the necessary information # Click post # View the redirection page.",5 +"MDL-35981","10/11/2012 08:13:52","Comment delete confirmation yes/no pop-up not detected by JAWS or Voiceover","*Issue* Error Identification - The error that shows up (Yes/No links)when the delete comment is activated is not detected by JAWS or Mac Voiceover. Further more the delete icon can only be accessed via the mouse. Using the keyboard to navigate to the delete icon and hitting enter does not cause the yes/no dialog to appear. *Standard Level* WCAG 2 3.3.1 (A) [] *Impact* Critical *Example Link* [http://accessibility.mroomstest.net/blog/index.php] *Test Steps* # Login as user0 # navigate to the link above # Expand the comments area # Click the delete comment button on a comment with a screen reader on # Notice that nothing is stated when the yes no options appear",3 +"MDL-35984","10/11/2012 10:52:14","Gradebook Sum of grades shows wrong total if items are hidden","When using the Sum of grades aggregation, if one of more items are hidden the total shown to students is no longer the correct Sum and appears to be the 'Mean of grades' Steps to reproduce: Make 4 Assignments (or just grade items), set their max grades to 10, 20, 30 and 40 (total = 100 to make it easy) Find a student and mark them for each so their scores are 5/10, 10/20, 15/30, 20/40 (50% for all) Set the Aggregation in Grades to 'Sum of grades' ('Extra credit' and 'Aggregate only non-empty grades' all unticked) View User report and you'll see a total of 50/100 for the student (or login with the student account for the same view) Asmt1 5.00 0-10 Asmt2 10.00 0-20 Asmt3 15.00 0-30 Asmt4 20.00 0-40 Total 50.00 0-100 Go to ""Full view' and hide assignment 4 (I used with the 'eye' in the Actions list but other methods produce the same result) Go to 'Course grade settings', Change 'Hide totals if they contain hidden items' to 'Show totals excluding hidden items' And change 'Show hidden items' to 'Do not show' View User report The 3 remaining items are 5, 10, 15 which total 30 however total shown is now 37.5/100 Asmt1 5.00 0-10 Asmt2 10.00 0-20 Asmt3 15.00 0-30 Total 37.50 0-100 Whichever item is hidden the total is always 37.5/100, if 2 items are hidden the total is 25/100. Expecting that when an item is hidden the Sum total should not include it so when item 4 was hidden the total should be 60 and the student score 30/60 however the total remains at 100. I've tested this in 2.3, 2.1 and 2.0 all do the same. I couldn't find anything similar in the tracker but found this which may be related: http://tracker.moodle.org/browse/MDL-14831 ",20 +"MDL-36002","10/12/2012 03:13:54","Move action for activities and course sections are not keyboard accessible with javascript enabled","*Issue* Keyboard - the move activity and move section icons are not accessible by keyboard alone when javascript is enabled. *Standard Level* WCAG 2 2.1.1 (A) [http://www.w3.org/TR/UNDERSTANDING-WCAG20/keyboard-operation-keyboard-operable.html] *Impact* Serious *Example Link* [http://demo.moodle.net/course/view.php?id=625¬ifyeditingon=1] *Test Steps* # Login as teacher # Navigate to the CF101 course # Turn editing on # Try to tab to the move icon for the activity or section.",8 +"MDL-36003","10/12/2012 03:14:09","Add event/logging when student views grades","There are times when I would very much like to know whether students are checking their grades. However, views of Grades (or anything else in Blocks) are currently not being logged. It would be helpful if views of Grades could be logged. View events need to be added to the following reports: - ‘Grader report’ - ‘Outcomes report’ - ‘Overview report’ - ‘User report’ Also add event for Updating ‘My report preferences’. /grade/report/grader/preferences.php?id=XXX ",20 +"MDL-36005","10/12/2012 03:25:51","Forms help icons are placed within labels","*Issue* Form labels - Moodle forms inputs that have help icons place the help icon within the label for the inputs this clutters the label text and makes it impossible to understand the function of the input. This is because the help text is spoken by the screen reader as part of the label for the input field *Standard Level* WCAG 2 1.1.1 (A) [http://www.w3.org/TR/UNDERSTANDING-WCAG20/text-equiv-all.html] *Impact* Critical *Example Link* [http://core/course/view.php?id=2#section-0] *Test Steps* # Login as teacher # Access the CF101 course # Add an assignment # With a screen reader navigate to the allow submissions from field. Listen to what is spoken.",20 +"MDL-36009","10/12/2012 05:33:52","Gradebook table uses complex tables that are not accessible","*Issue* Teacher: * Gradebook uses complex tables that are not accessible. * Row headers are incorrect so the user thinks they are in a different row than they actually are. Student: * Screen reader is incorrectly reading the wrong row header data because of the blank cell in the top left corner of the table. *Standard Level* WCAG 2 1.3.1 (A) [http://www.w3.org/TR/UNDERSTANDING-WCAG20/content-structure-separation-programmatic.html] *Impact* Critical *Example Link* [http://demo.moodle.net/] *Test Steps* # Login as teacher # navigate to CF101 # Click grades link # Try to navigate the grades table. *Recommendations* * Reduce complexity of grade editing tables or provide an alternative, accessible interface. * Correct the structure of this complex table to ensure the row headers line up in the correct row. Test with a variety of screen readers. Explicitly set each table data cell's row and column headers. *edit 28/Aug/2014:* Unable to reproduce identified behaviour now that the UCLA code has been integrated. Some improvements to accessibility have been implemented under this issue, namely: * Top left cell(s) have been replaced with a single cell with rowspan that contains a label only visible to screen readers, namely {{get_string('participants')}}; scope has been set to col to make it relate to the three or more columns it sits above. * Header attributes removed from *grade report cell* and *email cell*; the only ""header"" for a row is the participant's name cell. This results in better behaviour; when prompted about a given cell, a screen reader reads first the column information (category / course, then activity title), followed by row information (user's name only), followed by the contents of the cell. Given that the floating user panel only contains the user's name, this should be an acceptable tradeoff. Note that a lot of elements within these cells do not yet have their appropriate ARIA attributes (e.g. the user picture); this will be addressed in MDL-46662. *Changes, mostly to ""left"" cells generated by get_left_rows():* # Top-left filler cells #* Amended logic to generate a single big filler cell using {{rowspan}}, instead of multiple stacked filler cells. #* Set {{scope}} attribute to target columns below. #* Added a {{span}} to hold a label for said columns, using lang string {{participants}}. # User rows #* Moved {{header}} class onto first column #* Added {{rowheader}} class to first column #* Changed all other columns to be {{td}} s rather than {{th}} s so screen readers don't count them as ""row headers"" #* Hid user avatars from screen readers # Activity headers #* Hid activity icons from screen readers",20 +"MDL-36011","10/12/2012 05:53:34","flexible table hide column does not announce change to screen reader","*Issue* Context change - Hiding/showing a column in the assignment grading screen does not announce the change to the user. It would be useful to rely on aria-live=""polite"" to tell screen readers if the zones are ""live"" (opened or closed) or provide another similar mechanism. *Standard Level* WCAG 2 3.3.2 (A) [http://www.w3.org/TR/UNDERSTANDING-WCAG20/minimize-error-identified.html] *Impact* Serious *Example Link* [http://demo.moodle.net/mod/assign/view.php?action=grading&id=41&thide=userid] *Test Steps* # Login as teacher # Access CF101 # Click on assignment # Click on grade attempts # Close a column in the report and notice nothing is announced.",3 +"MDL-36034","10/14/2012 01:42:16","pre-cache active filters for course categories to significantly reduce database queries","On Moodles that have a lot of course categories, and a filter enabled for content and headings (e.g. multilang), there are currently excessively many database queries being made (e.g. 1 per course category). For example, if you have 500 course categories, which is often the case for large institutions, you will have > 500 queries on course/index.php or course/category.php. The database queries are caused by a call to get the context instance for each course category. I've coded something in the branch https://github.com/brki/moodle/tree/mdl23-preload-filters-for-course-categories . The commit https://github.com/brki/moodle/commit/da23cce06d7edbd2cad43ba9c25396dcf5bfac35 preloads all the course category context instances for course/index.php and course/category.php. This reduces the database queries significantly (it makes two database queries to get all of the course category contexts instead of one for every course category). ",20 +"MDL-36063","10/16/2012 03:44:32","Extra credit boxes checked when switching aggregation methods","This is the same issue as MDL-21449, which was closed for inactivity. If you create the a grade category with the aggregation method ""Simple weighted mean of grades"" and add items to it those items do not have the extra credit box checked by default. However, if you change the aggregation method for a category to ""Simple weighted mean of grades"" then all the items in that category will have the extra credit box checked. Steps to reproduce: # Create a gradebook category with the aggregation method ""Weighted mean of grades."" # Add some items to the category, without the extra credit box checked. # Change the aggregation method on that category to ""Simple weighted mean of grades.""",3 +"MDL-36081","10/17/2012 06:49:18","Video player can't be controlled by keyboard","*Issue* Keyboard control - The content can be loaded, but it cannot be started without using a mouse. Keyboard control - The controls can only be tabbed through if the mouse is used to show the control bar (therefore, unusable with only the keyboard). Keyboard trap - Once the user tabs inside the pane, there is no way getting out of the player zone. Focus order - Focus cannot be made into the player without first clicking into it with a mouse. *Standard Level* WCAG 2 2.1.1 (A) [] WCAG 2 2.1.2 (A) [] WCAG 2 2.4.3 (A) [] *Impact* Critical *Example Link* [http://demo.moodle.net/] *Test Steps* # Login as a teacher # Navigate to CF101 # Create a file resource # Upload a video # Save and display # Keyboard navigate to the video controls.",100 +"MDL-36088","10/17/2012 12:39:37","Adding/modifying questions to/in the question bank is not logged","Adding questions through a quiz is logged, but I found that the action of adding a question to the question bank is not logged. *Replication steps:* # Log in as a teacher # Navigate to a course # Navigate to Settings > Course admin > Question bank # Create a new question # Modify an existing question # Navigate to Navigation > My courses > CourseXXX > Reports > Logs (or look in the log table in the DB) # Click 'Get these logs' _Expected result:_ Question bank changes should be shown _Actual result:_ No entries for adding/modifying question bank questions are recorded Full list of missing events in question bank: - Creating a question - updating a question (should also be triggered when question is moved to a new category) - deleting a question - Duplicating a question - Updating a question category (should also be triggered when category is moved to another parent) - deleting a question category - Importing questions (separate event is optional but still requires question_created event for each individual question) - Exporting questions (note: crud=r) Oddly there is one existing event \core\event\question_category_created",40 +"MDL-36126","10/19/2012 01:30:32","Error restoring a Moodle 1.9.x course to Moodle 2.x due to long filenames","While restoring a Moodle 1.9.x course to Moodle 2.3, I got the following error: {code} Debug info: Data too long for column 'message' at row 1 INSERT INTO mdl_backup_logs (backupid,timecreated,loglevel,message) VALUES(?,?,?,?) [array ( 0 => 'b783c62066f0733c5aa46099d97fac06', 1 => 1350576667, 2 => 30, 3 => '(moodle1) error migrating file course_files/%D7%94%D7%A4%D7%95%D7%98%D7%A0%D7%A6%D7%99%D7%90%D7%9C_%D7%9C%D7%94%D7%A0%D7%94%D7%99%D7%92_%D7%94%D7%94%D7%91%D7%93%D7%9C%D7%99%D7%9D_%D7%91%D7%99%D7%9F_%D7%9E%D7%A0%D7%94%D7%99%D7%92%D7%99%D7%9D_%D7%9C%D7%9C%D7%90_%D7%9E%D7%A0%D7%94%D7%99%D7%92%D7%99%D7%9D.doc', )] Error code: dmlwriteexception Stack trace: line 410 of /lib/dml/moodle_database.php: dml_write_exception thrown line 948 of /lib/dml/mysqli_native_moodle_database.php: call to moodle_database->query_end() line 990 of /lib/dml/mysqli_native_moodle_database.php: call to mysqli_native_moodle_database->insert_record_raw() line 72 of /backup/util/loggers/database_logger.class.php: call to mysqli_native_moodle_database->insert_record() line 63 of /backup/util/loggers/database_logger.class.php: call to database_logger->insert_log_record() line 94 of /backup/util/loggers/base_logger.class.php: call to database_logger->action() line 100 of /backup/util/loggers/base_logger.class.php: call to base_logger->process() line 100 of /backup/util/loggers/base_logger.class.php: call to base_logger->process() line 100 of /backup/util/loggers/base_logger.class.php: call to base_logger->process() line 168 of /backup/util/helper/backup_helper.class.php: call to base_logger->process() line 96 of /backup/converter/convertlib.php: call to backup_helper::log() line 80 of /backup/converter/moodle1/lib.php: call to base_converter->log() line 1331 of /backup/converter/moodle1/lib.php: call to moodle1_converter->log() line 609 of /backup/converter/moodle1/lib.php: call to moodle1_file_manager->log() line 81 of /mod/label/backup/moodle1/lib.php: call to moodle1_converter::migrate_referenced_files() line 299 of /backup/converter/moodle1/lib.php: call to moodle1_mod_label_handler->process_label() line 737 of /backup/converter/moodle1/lib.php: call to moodle1_converter->process_chunk() line 125 of /backup/util/xml/parser/processors/grouped_parser_processor.class.php: call to moodle1_parser_processor->dispatch_chunk() line 148 of /backup/util/xml/parser/processors/simplified_parser_processor.class.php: call to grouped_parser_processor->postprocess_chunk() line 92 of /backup/util/xml/parser/processors/progressive_parser_processor.class.php: call to simplified_parser_processor->process_chunk() line 169 of /backup/util/xml/parser/progressive_parser.class.php: call to progressive_parser_processor->receive_chunk() line 253 of /backup/util/xml/parser/progressive_parser.class.php: call to progressive_parser->publish() line ? of unknownfile: call to progressive_parser->end_tag() line 158 of /backup/util/xml/parser/progressive_parser.class.php: call to xml_parse() line 137 of /backup/util/xml/parser/progressive_parser.class.php: call to progressive_parser->parse() line 150 of /backup/converter/moodle1/lib.php: call to progressive_parser->process() line 129 of /backup/converter/convertlib.php: call to moodle1_converter->execute() line 209 of /backup/util/helper/convert_helper.class.php: call to base_converter->convert() line 421 of /backup/controller/restore_controller.class.php: call to convert_helper::to_moodle2_format() line 35 of /backup/restore.php: call to restore_controller->convert() {code} decoding the filename {code}%D7%94%D7%A4%D7%95%D7%98%D7%A0%D7%A6%D7%99%D7%90%D7%9C_%D7%9C%D7%94%D7%A0%D7%94%D7%99%D7%92_%D7%94%D7%94%D7%91%D7%93%D7%9C%D7%99%D7%9D_%D7%91%D7%99%D7%9F_%D7%9E%D7%A0%D7%94%D7%99%D7%92%D7%99%D7%9D_%D7%9C%D7%9C%D7%90_%D7%9E%D7%A0%D7%94%D7%99%D7%92%D7%99%D7%9D{code} using http://meyerweb.com/eric/tools/dencoder/ I get the original Hebrew filename {code}הפוטנציאל_להנהיג_ההבדלים_בין_מנהיגים_ללא_מנהיגים{code} Since each single character in the Hebrew filename is tripled (decoded)... I suggest either to trim the filename variable that is sent to the insert sql statement or set the table field type to TEXT (and not VARCHAR(???) )",13 +"MDL-36175","10/24/2012 01:04:44","Moving blocks on the course page is impossible with a keyboard","*Issue* Keyboard access - A user is unable to move a block in the course page when editing is turned on only using the keyboard. The user has to clock on the block and drag it to its new location. *Standard Level* WCAG 2 2.1.1 (A) [http://www.w3.org/TR/UNDERSTANDING-WCAG20/keyboard-operation-keyboard-operable.html] *Impact* Critical *Example Link* [http://demo.moodle.net/] *Test Steps* # Login as teacher # navigate to CF101 # turn editing on # Try to move a block with only the keyboard.",13 +"MDL-36334","11/01/2012 23:43:21","Add support for selected gallery modules","We need to look at the best way of doing this. From a quick play: * lib/outputrequirements.php::__construct() needs to remove the gallery group if we're using the CDN * lib/outputrequirements.php::__construct() needs to have the correct base for lib/yuilib/gallery/ * we need to include a specific snapshot of gallery in lib/yuilib/gallery - preferably the same version as defined in lib/yuilib/3.7.3/build/loader/loader.js * we need to drop $galleryversion from yui_module() and force people to use the gallery version that we ship which will be the same version as the loader defines",20 +"MDL-41935","11/06/2012 17:07:45","Prevent false-positive failures due to time differences","Some tests fail if they happen to run when the second changes over. This is annoying as it causes random failures. (It might be difficult to fix in general, but one option is to make tests allow a 1 second leeway, i.e. rather than doing, assert that $time1 == $time2, do assert that $time2 - $time1 < 2.) There might already be an issue for this but in case not, I'm filing one to start the ball rolling. (I did a search for the test_group_updated_event string and didn't find anything.) {code} core_group_lib_testcase::test_group_updated_event Event legacy data does not match expected value. Failed asserting that two objects are equal. --- Expected +++ Actual @@ @@ 'timecreated' => '1379077452' - 'timemodified' => '1379077452' + 'timemodified' => '1379077453' ) {code} And links from Dan (inc this and others): http://integration.moodle.org/job/20.%20Run%20phpunit%20UnitTests%20(master)/1668/testReport/(root)/core_setuplib_testcase/test_localcachedir/ http://integration.moodle.org/job/20.%20Run%20phpunit%20UnitTests%20(master)/1665/testReport/junit/(root)/core_group_lib_testcase/test_group_updated_event/ http://integration.moodle.org/job/20.%20Run%20phpunit%20UnitTests%20(master)/1623/testReport/junit/(root)/core_setuplib_testcase/test_localcachedir/ http://integration.moodle.org/job/20.%20Run%20phpunit%20UnitTests%20(master)/1605/testReport/junit/(root)/core_completionlib_testcase/test_update_state/ --- Original description completionlib_testcase::test_update_state Expectation failed for method name is equal to when invoked at sequence index 2 Parameter 1 for invocation completion_info::internal_set_data(stdClass Object (...), stdClass Object (...)) does not match expected value. Failed asserting that two objects are equal. --- Expected +++ Actual @@ @@ stdClass Object ( 'completionstate' => 0 - 'timemodified' => 1352192574 + 'timemodified' => 1352192575 ) /Users/Shared/Jenkins/Home/git_repositories/MOODLE_23_STABLE/lib/completionlib.php:524 /Users/Shared/Jenkins/Home/git_repositories/MOODLE_23_STABLE/lib/tests/completionlib_test.php:162 /Users/Shared/Jenkins/Home/git_repositories/MOODLE_23_STABLE/lib/phpunit/classes/basic_testcase.php:64",5 +"MDL-36404","11/07/2012 05:25:20","Make the rubrics advanced grading criteria accessible to screen readers","*Issue* The tables for criteria in both the create an advanced grading method and in the view of the advanced grading method when grading an assignment do not have table headers or a table summary. A non sighted user can't determine where they are in the table without headers. *Standard Level* WCAG 2 1.3.1 (A) [http://www.w3.org/WAI/WCAG20/quickref/#qr-content-structure-separation-programmatic] *Impact* Critical *Example Link* [http://demo.moodle.net/] *Test Steps* # Login as a teacher # Navigate to CF101 # Create and Assignment and set the grading to marking guide or rubric # Try to navigate through the criteria table using a screen reader. Try to determine your position in the table.",100 +"MDL-36460","11/09/2012 00:30:52","Forced/Auto forums list all potential subscribers and ignore completion/availability info","When a forum is created with Auto Subscription selected, and a grouping chosen, only those users that belong to the grouping should be subscribed. Also, when forced subscription is checked, and a grouping is selected, only those users belonging to the group should be listed as subscribed. Currently, in both of those scenarios all users in the course are subscribed. This has implications with the emailing of notifications due to new forum posts and whatnot. Instead of only the grouping members receiving the email ALL members receive it. *Problem 1: Automatic Subscriptions* Prerequisite: A course with at least 1 grouping, containing at least 1 group, containing at least 1 user IN the group, and at least 1 user NOT IN the group. # Add a new forum to the course with the following settings. ## Subscription mode: Auto subscription. ## Group mode: Separate groups or Visible groups ## Grouping: Choose your grouping # Look at the subscription list. Expected: Only members in the grouping will be in the subscribers list Actual: All members in the course are in the subscribers list. *Problem 2: Forced Subscription* Prerequisite: Users with valid Email address you can check. Valid email settings for Moodle. # Add a new forum to the course with the following settings. ## Subscription mode: Forced subscription. ## Group mode: Separate groups or Visible groups ## Grouping: Choose your grouping # Create a new post. ## Mail Now: Checked (for convenience) # Wait for emails to arrive. Since forum does it's mail sending using the CRON utility you may need to trigger a cron run (/admin/cron.php) Expected: Only members of the grouping receive emails Actual: All members in the course receive emails.",13 +"MDL-36803","11/23/2012 19:03:36","TinyMCE editor doesn't accept keyboard input on iOS6 after touch event","We're seeing that TinyMCE does not allow you to continue using the keyboard after you've typed something in, and then used the magnifier to move elsewhere in the text: * Create a new forum post * Type some text (preferably something reasonably long) * Click elsewhere in the text to move the cursor (or try to zoom out) * Try and type some more content",20 +"MDL-36836","11/26/2012 15:02:17","Alfresco select box broken in Chrome.","This test requires the Alfresco repository to be enabled and an Alfresco account for use in testing. # Login as a student and go to a forum using the chrome browser. # Add a new discussion topic and click the Add button to add an attachment. # Choose Alfresco in the file picker then click the Login button. # Once logged in notice how the select box and alfresco folder are overlapping. ",8 +"MDL-36847","11/26/2012 23:25:27","Prevent inaccurate feedback notifications where grade item hidden","If the grade column for a mod_assign assignment is hidden and a grader provides feedback, the student is sent a message saying something like ""[teacher] has posted some feedback on your assignment submission for [assignment name]. You can see it appended to your assignment submission."" This is confusing for the student as they can't actually see it until the grader has made the grade column visible (which, in our institution at least, can be well over a week after the feedback is given). To replicate issue: # Create an assignment # Set feedback comments and feedback files to yes # Log in as a student and make a submission # Log back in as a teacher and hide the gradebook item for the assignment # Give feedback on the item # The student will get a notification message saying ""[teacher] has posted some feedback on your assignment submission for [assignment name]. You can see it appended to your assignment submission."" # Log in as the student and follow the link in the email. You don't see the feedback. ",8 +"MDL-36984","12/03/2012 23:30:43","Assignment module should redirect after form submissions","After a student edits or saves a submission the view submission page is rendered directly without a redirect. This allows the possibility of resubmitting the form by using the browser refresh button or shortcut-key (e.g., F5). It also leaves the URL in the address bar set to {wwwroot}/mod/assign/view.php with no parameters which can cause confusion for users who bookmark the address, which when visited gives a required_param missing error. Redirecting the user after form submission ensures that the form cannot be resubmitted with a browser refresh and ensures that the URL is a valid URL for bookmarking. It would be ideal if a grader were redirect after submitting a grade for a student for the same reasons listed above.",13 +"MDL-37016","12/05/2012 22:59:55"," null event.uuid's discovered when upgrading to Moodle 2.4","When I tried to upgrade to Moodle 2.4 from Moodle 2.3.3+, I received the following message: {noformat} System DDL sql execution error More information about this error Debug info: Data truncated for column 'uuid' at row 11 ALTER TABLE mdl_event MODIFY COLUMN uuid VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' after visible Error code: ddlexecuteerror Stack trace: line 432 of /lib/dml/moodle_database.php: ddl_change_structure_exception thrown line 860 of /lib/dml/mysqli_native_moodle_database.php: call to moodle_database->query_end() line 88 of /lib/ddl/database_manager.php: call to mysqli_native_moodle_database->change_database_structure() line 77 of /lib/ddl/database_manager.php: call to database_manager->execute_sql() line 586 of /lib/ddl/database_manager.php: call to database_manager->execute_sql_arr() line 598 of /lib/ddl/database_manager.php: call to database_manager->change_field_type() line 1308 of /lib/db/upgrade.php: call to database_manager->change_field_precision() line 1493 of /lib/upgradelib.php: call to xmldb_main_upgrade() line 284 of /admin/index.php: call to upgrade_core() {noformat}",8 +"MDL-37023","12/06/2012 04:45:35","Dock JS incorrectly parses region ID","M.core_dock.resizeBlockSpace() in blocks/dock.js expects all region IDs to be ""region-SOMETHING"", like ""region-pre"" In the theme/base/layout/report.php, the region ID is actually ""report-region-pre"". So, when M.core_dock.resizeBlockSpace() goes to manage the ""side-pre-only"" class in the body tag, it actually starts adding/removing ""report-region-pre-only"" class. This is due to the regex processing the region ID.",13 +"MDL-37145","12/13/2012 12:08:54","Documentation for caching admin screens","We need to add much more docs to explain what is going on in the caching plugin screens. People are complaining about it on the forums: https://moodle.org/mod/forum/discuss.php?d=217195",40 +"MDL-37148","12/13/2012 17:36:46","More webservices for Assignment","After a small bit of refactoring - most of the process_XXX functions in mod/assign/locallib.php would be suitable for calling from a webservice. List of simple functions: ||Function||Description||Parameters||Returns|| |mod_assign_revert_submissions_to_draft|Revert a list of submissions to draft for a single assignment|int assignmentid, array userids|array of external warnings| |mod_assign_lock_submissions|Lock a list of assignment submissions for a single assignment|int assignmentid, array userids List of user ids|array of external warnings| |mod_assign_unlock_submissions|Unlock a list of assignment submissions for a single assignment|int assignmentid, array userids List of user ids|array of external warnings| |mod_assign_submit_for_grading|Submit the current users submission for marking|int assignmentid|array of external warnings| |mod_assign_save_user_extensions|Grant extension due dates to a list of students for a single assignment|int assignmentid, array userids, array duedates|array of external warnings| |mod_assign_reveal_identities|Reveal the identities for users in a blind marking assignment|int assignmentid|array of external warnings| More complicated functions: ||Function||Description||Parameters||Returns|| |mod_assign_save_submission|Save a submission to the assignment as the current user|int assignmentid, plugindata array of fields used by plugins to save the submission. The valid list of fields is dependent on the installed plugins|array of external warnings| |mod_assign_save_grade|Save a grade to the assignment as the current user|int assignmentid, int userid, float grade, bool applytoall, plugindata array of fields used by plugins to save the feedback. The valid list of fields is dependent on the installed plugins|array of external warnings| Other contenders - download_all_submissions (link to download a zip - TBD)",8 +"MDL-37181","12/15/2012 18:28:42","Backups report show all courses with status Skipped.","The backups report is showing the status since the last cron, but should show the status from the last (un)succesfull backup. The information in the time taken column can give a clue if an automatic backup happened or was skipped, but now one can only know if the last backup was succesfull - skipped - unfinished - with a warning - with error, by checking the backup destination folder and mdl_backup_controllers table. ",13 +"MDL-37243","12/20/2012 10:16:05","Comments API doesn't store or validate component","The comments DB table doesn't have a component in it only a comment area: {code} moodle=# select * from m24_comments; id | contextid | commentarea | itemid | content | format | userid | timecreated ----+-----------+----------------+--------+---------+--------+--------+------------- 2 | 15 | page_comments | 0 | test | 0 | 2 | 1355903721 3 | 15 | page_comments | 0 | Blah! | 0 | 2 | 1355966525 4 | 34 | database_entry | 2 | test | 0 | 2 | 1355967009 (3 rows) {code} As far as I can see, there is no way to get from that commentarea back to a component, therefore there is no way to validate the permisisons. See for example: {code} private function check_permissions() { $this->postcap = has_capability('moodle/comment:post', $this->context); $this->viewcap = has_capability('moodle/comment:view', $this->context); if (!empty($this->plugintype)) { $permissions = plugin_callback($this->plugintype, $this->pluginname, 'comment', 'permissions', array($this->comment_param), array('post'=>false, 'view'=>false)); $this->postcap = $this->postcap && $permissions['post']; $this->viewcap = $this->viewcap && $permissions['view']; } } {code} It looks to me that this plugintype only comes from the HTML and is not validated at all. So for example you could switch to the validation for a mod_assign comment to block_comment validation. You could probably also manipulate the html to view other peoples comments.",40 +"MDL-37312","12/29/2012 22:13:30","restore always removes course idnumber","This looks weird especially when restoring on the same site. I would personally expect that restore verifies that user may change idnumber + no idnumber exists + this is the same site and if all conditions are true then keeps the same idnumber.",13 +"MDL-37324","01/01/2013 15:08:28","Import phpmailer 5.2.7","see https://github.com/Synchro/PHPMailer/blob/master/changelog.md",2 +"MDL-37528","01/15/2013 19:39:53","Ajax dragging not working (fails to 'pick up')","in Moodle versions 2.4.x there are numerous reports that Ajax drag and drop isn't working for moving blocks on the course page and the quiz module. This seems to affect latest versions of Firefox, Chrome and IE and occurs in multiple themes. When attempting to move sections using the Maltese cross section dragger, Chrome and Firefox will both display a page with the icon image. Drag and drop of files does seem to work. Clarification: This particular bug is about dragging (blocks/activities/sections) failing to 'pick up' the desired object. It will either do a selection, or pickup the move image itself.",13 +"MDL-37565","01/17/2013 06:31:33","Better looking tinymce editor: toggle toolbars between 1 and 3 lines","I suggest few changes to make tinymce editor look better: * ""Advanced"" button that show all hidden button. Hopefully tinymce support this feature. * Display the essential buttons in one line only. My preferences are: Bold/Italic/link/Images/heading/lists * tweak the CSS to match our current standard theme in a better way than current tinymce theme. I'm attaching a picture of Wordpress as example. It is pleasant to look, not overwhelming and show off the media button which is actually the essential one in my opinion => it would show off the pretty Moodle file picker. If the advanced button feature exist in tinymce, then I don't think the issue is too hard to implement. Otherwise it may require to change Tinymce and then this improvement would not be great for maintainability.",20 +"MDL-37679","01/24/2013 23:30:25","When viewing a single section, the page title does not update","*Issue* When a user clicks to view an individual section, the page title for the individual section is the course name not the course name plus the section name that the user is viewing. This means that a user does not know they have changed pages. *Standard Level* WCAG 2 2.4.2 (A) [http://www.w3.org/TR/UNDERSTANDING-WCAG20/navigation-mechanisms-title.html] ",5 +"MDL-37717","01/26/2013 16:09:55","add warning when teacher tries to disable enrolment method (same as when deleting it)","Teacher with default permissions can ""disable"" enrolment method which is used for his/her own access to a course. There is a warning when he/she tries to ""delete"" the enrolment method. As both actions result in locking the teacher out of his/her course, it would be highly beneficial to have similar warning for ""disabling"" enrolment method.",2 +"MDL-37812","01/31/2013 20:14:31","admin can set site-wide default settings for user profile fields: Email display, format, digest, Forum subscription & tracking, use HTML editor, Screen reader","I am the administrator of a Moodle site using Moodle 2.2.6 (Build: 20121112). I'd like to change the default settings for the following user profile fields to be as follows: Email Display = 2 (Allow only other course members to see my email address) Email Format = 1 (Pretty HTML format) Email digest type = 1 (Complete (daily email with full posts) Forum auto-subscribe = 0 (No: don't automatically subscribe me to forums) Forum tracking = 1 (Yes: highlight new posts for me) When editing text = 1 (Use HTML editor (some browsers only)) AJAX and Javascript = 1 (Yes: use advanced web features) Screen reader = 0 (No) I see no reason why every Moodle site admin would want the default settings to be as I've listed above so I propose that a new page(?) be created in the Site Administration area (perhaps Site administration > Users > Accounts) for site admins to set the default settings for these common fields site-wide. Obviously the default settings can be modified by users who have permission or when creating new accounts. I find it a pain now to create new user accounts and have to have these fields listed in each upload. I read in discussion https://moodle.org/mod/forum/discuss.php?d=33370 that I could change the settings in /user/editlib.php (starts at ~ line 143). I'd prefer not to modify core code on my site as it is difficult to maintain with each upgrade and I think this issue applies to other Moodle users. I've read in MDL-32627, https://tracker.moodle.org/browse/MDL-32627 that the default setting for AJAX is going to be as I'd prefer it as soon as I move to Moodle 2.3. What about the other fields though?",40 +"MDL-37813","01/31/2013 20:37:14","$CFG->stringfilters do not get updated during upgrade or when a filter is deleted","On upgrade from 1.9 to 2.x, filters that are no longer installed/available are not removed from $CFG->stringfilters config. Additionally, when filters are uninstalled, they are not removed from $CFG->stringfilters config. They should be removed during upgrade and when filters are uninstalled. The additional filters in $CFG->stringfilters can cause $CFG->filterall to remain enabled, which adds DB load to each page load to filter all strings. There is no way to change it via the UI - an admin must manually remove the legacy filters from the string. ",3 +"MDL-37824","02/01/2013 08:34:53","Navigation block: clicking on ""My courses"" sends you to ""My moodle""","Any text link you click on within ""My courses"" sends you to the ""My moodle""- page while opening the list of my courses in the navigation block itself. Under https://moodle.org/mod/forum/discuss.php?d=218500 I found at least two more Moodle-admins which find this very annoying. So we are three, at least ;-) By means of a jQuery-hack I replace the my-address in the text-link with a ""#"" and it works fine (= only the list of my courses opens in the navigation block). But I would prefer moodle to remove this useless link...",8 +"MDL-37877","02/05/2013 15:16:54","Over-large backups fail transparently, then do not get deleted next time, so space fills up","This refers to scheduled backups, where the number of versions kept is set to one. This customer site has about half a dozen very large courses, where the backup system generates vary large files (two examples from the test I ran this morning are 7.8GB and 9.2GB). These are obviously too large to be successfully zipped, and when the backup processes them, it eventually fails with the error like : ""Error - backup-moodle2-course-1681-20130205-1034.mbz does not appear to be a valid backup (missing_moodle_backup_xml_file)"" Then (in the log) it says ""complete - next execution (the next scheduled backup time)"" So it fails, presumably because it is too big - but then carries on. This in itself is good, as previously, failures like this were stopping the backup schedule completely. However, the next time that the scheduled course backup is run, all of the old versions of the backups are replaced (remember, we are only keeping one of each) EXCEPT the failed backups. Moodle does not seem to recognise them as valid backups, despite their filenames, so they are NOT deleted. Over the course of several days, the multiple copies of large failed backups that result from this eventually fill up the server disk, and cause teh site to fail. I know that this relates to the larger subject of handling very large course backups, but can anything be done with the checking process, so that these large failed backup files do not get left to fill up the server? ",40 +"MDL-37972","02/11/2013 20:28:02","Assignment (2.2) ""Upload Single"" settings submission file link does not work","In an ""Upload Single"" assignment 2.2 type the file submission link for a student found in the Settings block under Assignment Administration -> Submission is a broken link. When clicked the following error message is produced: {quote} ""No valid arguments supplied"" Stack Trace: line 435 of /lib/setuplib.php: moodle_exception thrown line 3192 of /lib/filelib.php: call to print_error() line 37 of /pluginfile.php: call to file_pluginfile() {quote} Steps to Recreate: # Access a course as Student and make a submission for a Upload Single file type Assignment (2.2) # Navigate to Settings Block > Assignment administration > Submission # Observe that file name which was submitted is listed as a link # Click on the link in attempt to download the file Expected Result: Successful download of the Submitted file Actual Result: Error message is rendered that ""No valid arguments supplied"" ",3 +"MDL-38228","02/27/2013 00:32:41","Major Performance Problem with ""Moving Modules"" upgrade step","The upgrade script portion of the fix for MDL-37939 is inefficient and causes a considerable performance problem for upgrading large sites. The process queries course modules for each course section individually. That's a pretty big deal for Moodlerooms, where our largest site has nearly 445,000 course sections, and an average of over 6,000 course sections across 1,200 sites. The root of the problem is finding the course modules which don't exist in the sequence field of the related course section. The following query will get those course section records for you. {code:sql} SELECT cs.* FROM mdl_course_sections cs INNER JOIN mdl_course_modules cm ON (cm.course = cs.course AND cm.section = cs.id) WHERE CONCAT(',', cs.sequence, ',') NOT LIKE CONCAT('%,', cm.id, ',%') {code} The following returns an average of 33 course sections for affected sites (~80%), with a maximum of 772 course sections. Note: FIND_IN_SET is an operator that only works for MySQL and PG, but the query can be tweaked to support any RDBMS. *Additonally:* for 2.5 and 2.6 branches the new upgrade script has to be run again because of another bug. In version 2.4 we can just replace the old script with a faster one.",20 +"MDL-38347","03/06/2013 09:36:33","Left and right arrows for calendar not showing up on Android","The default left and right triangle icons (as used in the calender block to move to the previous or next month and as a seperator in the breadcrumb trail) have issues on Android. On Android 4.0 up, the font is called Roboto. It seems to not have the left pointing version. I've not seen it myself but I've had reports that 2.3 devices (which use a font called Droid Sans) are missing both versions. Here's a list of the geometric shapes available in Unicode: http://www.alanwood.net/unicode/geometric_shapes.html We currently use: 25BA BLACK RIGHT-POINTING POINTER 25C4 BLACK LEFT-POINTING POINTER I believe these particular shapes may have been originally chosen to ensure they displayed on IE6/XP (IE6 has issues where it didn't fall back if the first chosen font didn't contain the character, proper browsers continue to search through all your fonts). Perhaps a different triangle shape could be used? Though testing that it works on everything else could be a pain. Longer term these could be provided by an icon font or SVG icons. I'm marking this as RTL-related as I assume the left facing one is used more in those situations, and at least on Android 4.0 that seems to be the main issue.",3 +"MDL-38561","03/20/2013 00:00:55","Convert filepickers and filemanagers to YUI modules","These are a little broken, as discussed in MDL-38515. core_filepicker describes a file in /repository/filepicker.js which adds a YUI module called moodle-core_filepicker. Because the YUI module is wrapped in a YUI.add line, it's contents are only added to the sandbox when a module depends on moodle-core_filepicker. So in order to get this to work, core_filepicker depends on moodle-core_filepicker. The inclusion of core_filepicker means that the JS file itself is included, and then the contents of it's YUI module are handled by our legacy code having it depend on it's own module. This is really really broken and needs to be fixed as it prevents us from detecting and reporting other issues. My suggested fix is to go over the existing code and convert all of the bits to appropriate YUI modules. This may give us an opportunity to write a treeview based on the new YUI3 Y.Tree so we can remove the current dependence on yui2 here. My guess is that this could be a week or two's work.",100 +"MDL-38628","03/21/2013 14:04:22","New Assignment Module - Gives learners the top grade in a scale","Create new scale 'Achieved', 'Not Achieved', 'Not Marked' - Achieved being the most positive Create new Assignment Activity Use the scale we have just created Add activity to your course Add learner to your course Grade a learner - click on the 'silver cog' in the edit column then click 'Grade' You will be presented with 'Achieved' highlighted in the grade drop down list, although the 'Current Grade in Gradebook' is set to a '-' Do NOT EDIT the grade in this screen, just click save Then the grader report updates the table for that learner achieving this activity, even though we have not changed the grade ",3 +"MDL-38664","03/23/2013 17:00:52","Lesson essays ""disappear"" if new attempt after exiting","See this discussion: https://moodle.org/mod/forum/discuss.php?d=225141 Diagnostic.- When a student exits a Lesson before reaching the last page, upon resuming that lesson they are offered a choice: You have seen more than one page of this lesson already. Do you want to start at the last page you saw? Unfortunately, in some cases the system to ""goto last Unseen page"" does not work as expected, which causes problems especially with Essays. Due to the complicated nature of the Lesson settings and flow, it is rather difficult to describe and reproduce the bug, but the patch I am attaching seems to resolve the issue, after thorough testing. The bug concerns all moodle 2 versions. Patch tested against current moodle 2.4 version only. Joseph",8 +"MDL-38693","03/25/2013 13:07:18","WYSIWYG Editor cuts off content in full screen mode","The WYSIWYG Editor cuts off (left side) content when you toggle to full screen mode when there are blocks docked.",8 +"MDL-38698","03/25/2013 17:33:07","Convert URL into Links filter prevents backgrounds on tables when Apply to HTML Format is checked.","Issue: Convert URL into Links filter prevents backgrounds on tables when Apply to HTML Format is checked. *Steps to replicate:* # Go to: Site Admin>Plugins>filters>Convert URL into Links and Images # Ensure that HTML format is checked # Go to course # Add a Label # Make a table and add a background image using css to add a background Save _Actual Result:_ You will see the link for the background images as text above a table without an image _Expected result:_ Table with image as background ",13 +"MDL-38732","03/26/2013 20:02:57","Graded course activity while editing gradebook causes unintentional overrides","If an instructor goes into the gradebook and starts editing mode, and while the instructor is in that mode, someone does either a automatically graded activity, or someone edits the grades from something, when the instructor saves, but the individual grades and the course total grades will become overridden. Steps to reproduce: # As teacher, go into course grade book and turn editing on. # In another browser, go in as student and complete a quiz. # Back in first browser, submit grade book edit. Quiz grade for attempt will be overridden with a dash grade. ",40 +"MDL-38758","03/27/2013 10:18:45","Undefined variable: sillybyrefvar in mod/forum/backup/moodle2/restore_forum_stepslib.php","While restoring the Moodle Features Demo course from the MOOCH hub to the latest 2.5dev, the last page of the restore displays the following notice: {code} Notice: Undefined variable: sillybyrefvar in .../mod/forum/backup/moodle2/restore_forum_stepslib.php on line 200 {code} This is a regression of MDL-30102 that changed the signature of the function: {code} -function forum_add_discussion($discussion, $mform=null, &$message=null, $userid=null) { +function forum_add_discussion($discussion, $mform=null, $unused=null, $userid=null) { {code} so that the third parameter is not passed by reference any more. As a consequence, the restore code: {code} $sdid = forum_add_discussion($sd, null, $sillybyrefvar, $this->task->get_userid()); {code} throws the notice as the $sillybyrefvar is not set there.",5 +"MDL-38768","03/27/2013 18:07:15","Coding error ""The theme has already been set up for this page ready for output"" when adding blog entry to a page resource","When attempting to add a blog entry to a Page resource, this coding error results. {quote} Coding error detected, it must be fixed by a programmer: The theme has already been set up for this page ready for output. Therefore, you can no longer change the theme, or anything that might affect what the current theme is, for example, the course. More information about this error Debug info: Stack trace when the theme was set up: * line 640 of /lib/pagelib.php: call to moodle_page->initialise_theme_and_output() * line 769 of /lib/pagelib.php: call to moodle_page->magic_get_theme() * line 64 of /filter/mediaplugin/filter.php: call to moodle_page->get_renderer() * line 157 of /lib/filterlib.php: call to filter_mediaplugin->filter() * line 209 of /lib/filterlib.php: call to filter_manager->apply_filter_chain() * line 329 of /lib/filterlib.php: call to filter_manager->filter_string() * line 1313 of /lib/weblib.php: call to performance_measuring_filter_manager->filter_string() * line 1075 of /lib/pagelib.php: call to format_string() * line 926 of /blog/lib.php: call to moodle_page->set_title() * line 64 of /blog/edit.php: call to blog_get_headers() Error code: codingerror Stack trace: line 1744 of /lib/pagelib.php: coding_exception thrown line 872 of /lib/pagelib.php: call to moodle_page->ensure_theme_not_set() line 2782 of /lib/moodlelib.php: call to moodle_page->set_course() line 66 of /blog/edit.php: call to require_login() {quote} Via trial and error when attempting to reproduce the error on a different Moodle site, we found that it requires a specific combination of filters. *Steps to reproduce:* # Go to Site admin > Plugins > Filters > Manage filters. # Make sure ""Activity names auto-linking"" is On and applies to Content and Headings, also that it is the first enabled filter in the list. # Make sure ""Multimedia plugins"" is On and applies to Content and Headings, also that it is the second enabled filter in the list. # Go to a course and add a Page resource. # Add the Blog Menu block to the Page resource. # Click 'Add an entry about this Page' in the Blog Menu. # The above error is displayed. _Expected result:_ User should be able to add a blog entry without error. _Actual result:_ Coding error is displayed.",8 +"MDL-38771","03/27/2013 19:12:56","$CFG->yuicomboloading prevents use of yui_combo.php","It should stop use combo loading, but not yui_combo.php otherwise we have the potential to break caching.",5 +"MDL-38780","03/28/2013 03:29:37","Unread Posts listing on 'My Moodle' should take care of groups","Copying from linked issue(changing new posts to unread posts) Students might be seeing 'x unread posts since last login' notifications under 'course overview' in My Moodle even if the posts belong to groups that they do not have access to. Presumably, students should only get that notification if there are unread posts that they are able to see. *Replication steps:* # Create a course with a forum that is set to 'separate groups'. # Create two groups and enrol students into both. # Post something on one group's forum. # Log in as a student in the other group and see '1 post since last login' message under the subject in 'course overview'.",13 +"MDL-38827","04/01/2013 18:54:21","If ""Aggregate only non-empty grades"" is NOT selected for grade category then total is displayed as dashes instead of zeros.","Summary: When ""Aggregate only non-empty grades"" is NOT selected for a gradebook category, according to Moodle doc, that category total should display zeroes. However, the category total is showing ""dashes"" just as if ""Aggregate only non-empty grades"" WAS selected. 1. Create a category, set to Weighted Mean of Grades, select ""Aggregate only non-empty grades"". 2. Create two more categories, set to Mean of grades, DO NOT select ""Aggregate only non-empty grades"". Make these categories a sub-category of the first category you created. 3. Create a couple of assignments for each of these sub-categories. 4. Enroll a student and review the User Report for this student. According to the Moodle doc, the two subcategories created should be displaying a zero for the student category grades. However, only ""dashes"" are appearing. (Moodle doc: (http://docs.moodle.org/23/en/Grade_categories#Aggregate_only_non-empty_grades) 5. If you add grades for this student for any of the displayed assignments, then remove the grade, the category total will correctly display a zero (or ""F""). The Gradebook should be treating the empty grade items as zeros and calculating the total with appropriate aggregation and displaying the proper total.",40 +"MDL-38832","04/02/2013 01:55:14","Remove unused FRONTPAGE* constants","Remove constants described in /course/lib.php that are not used since 2.5: FRONTPAGECOURSELIST, FRONTPAGETOPICONLY, FRONTPAGECOURSELIMIT",2 +"MDL-38903","04/04/2013 09:01:46","File manager form elements size","When adding a file to a file manager the size of the form elements seems a bit weird",100 +"MDL-38923","04/05/2013 04:04:13","Cannot dock blocks with Bootstrapbase/clean theme","I suspect this is intentional behaviour. It may have been discussed and there may be reasoning for this. I thought I would report this distinction here in case no one had noticed and it was not previously discussed.",13 +"MDL-39001","04/06/2013 21:12:13","Unenroling and re-enrolling student causes inconsistent grade data","When a student is removed from course, her/his grades in mdl_grade_grades are moved to mdl_grade_grades_history. When the same student is re-enrolled into the course, his grades for the modules re-appear (ie. they are still in mdl_assign_grades etc.), but they are not re-exported back to mdl_grade_grades which serves as a source for evaluation of conditional access. After re-enrolling the student may have the grades required for conditionally available content, but it will not be available to her/him.",100 +"MDL-39044","04/09/2013 07:05:27","Replace strtolower in block/completionstatus with textlib::strtolower","Needs to be multibyte safe.",2 +"MDL-39150","04/16/2013 05:44:52","Finish detailed specification http://docs.moodle.org/dev/Logging_2","First task for the BACKEND team is to finish a detailed technical specification of the new system here and get approval from stakeholders: http://docs.moodle.org/dev/Logging_2 ",40 +"MDL-39152","04/16/2013 08:02:43","core_role_assign_roles ws function contains contextid as parameter, which is not correct","As per comment of Damyon Wiese to MDL-29472, ""Context is considered internal to Moodle - and not exposed to webservices. It should not be sent as a parameter or returned in a response"" FILE: enrol/externallib.php FUNCTION: assign_roles_parameters() PARAMETER: 'contextid' => new external_value(PARAM_INT, 'The context to assign the user role in') ",13 +"MDL-39153","04/16/2013 08:06:05","core_roles_unassign_roles ws function contains contextid as parameters, which is not correct","As per comment of Damyon Wiese to MDL-29472, ""Context is considered internal to Moodle - and not exposed to webservices. It should not be sent as a parameter or returned in a response"" FILE: enrol/externallib.php FUNCTION: unassign_roles_parameters() PARAMETER: 'contextid' => new external_value(PARAM_INT, 'The context to unassign the user role from'), ",5 +"MDL-39154","04/16/2013 08:12:01","core_files_get_files, core_files_upload_files ws functions contain context as parameter, which is not correct","Creating actually two issue here for two different WS, if it is preferred to open two issues just let me know. As per comment of Damyon Wiese to MDL-29472, ""Context is considered internal to Moodle - and not exposed to webservices. It should not be sent as a parameter or returned in a response"" FILE: file/externallib.php FUNCTION: get_files_parameters() PARAMETER: 'contextid' => new external_value(PARAM_INT, 'context id') FUNCTION: get_files_returns() PARAMETER: 'contextid' => new external_value(PARAM_INT, '') FUNCTION: upload_parameters() PARAMETER: 'contextid' => new external_value(PARAM_INT, 'context id') FUNCTION: upload_returns() PARAMETER: 'contextid' => new external_value(PARAM_INT, '') ",20 +"MDL-39227","04/19/2013 04:46:39","SCORM navigation panel is hidden when bootstrap theme is active","# Try accessing a scorm with bootstrap theme. # No navigation panel is shown.",5 +"MDL-39299","04/23/2013 06:30:41","CSS issues on a course page using Bootstrap (Clean theme)","See attached screenshots. - Grouping information is not aligned with activity name - Labels are bold - Labels activity completion icon is misaligned - For forums, the _x unread posts_ is not aligned with the activity name To consider: - There was an hover effect on the activities. Should we restore this hover effect that was added in base for accessibility reasons: MDL-30818 _Note: using the selector .course-content is not enough because an activity listing can be added on the front page (see .sitetopic)_",8 +"MDL-39350","04/25/2013 12:11:33","Collapsible editor tab can't be controlled via keyboard","The collapsible editor tab can't be reached via the keyboard using standard tab, spacebar and enter controls. The required functionality is that of the collapsible sections. You can tab to the section then press spacebar or enter to toggle it. ",8 +"MDL-39393","04/28/2013 20:40:57","Changing activity title on course front page with AJAX does not fire mod_updated event","When changing activity title (which is part of an activity) from course page with AJAX mod_updated event is not fired. I think this is inconsistency that should be remedied.",8 +"MDL-39569","05/08/2013 18:42:01","Second student can't confirm assignment submission","Create an assignment with group submission and confirmation by other students from group. Add a submission with first student account Login with a second student account and try to confirm the submission. The student gets a failure notification 'problem that only developer can solve' In MDL-37710 the problems seems to be solved for 2.4.2., but came back with 2.4.3. ",8 +"MDL-39603","05/10/2013 04:50:15","Search filter on enrolled users page is confusing in clean theme","# Select clean theme # Select course # Go to Course Administration -> Users -> Enrolled users # look at search filter.",8 +"MDL-39608","05/10/2013 07:05:54","Width thresholds for form labels in the Clean Theme need to be higher.","The changes in MDL-39158 push the file picker out of place",3 +"MDL-39653","05/13/2013 14:27:00","IMS Enterprise CRON job error","Moodle 2.4.3 Line 220 of /enrol/imsenterprise/lib.php This IF block should NOT run if the file does not exists or if the file is not new. When the file does not exist or is not new, an error is thrown at line 220 because $timeelapsed is not set. This causes the entire Moodle cron job to fail. Suggest either moving that block within the IF block above, or changing to: if (!empty($mailadmins) && file_exists($filename) && $fileisnew) {",2 +"MDL-39661","05/13/2013 22:24:28","theme_clean: notice about undefined offset","{quote} Notice: Undefined offset: 0 in /var/www/integration/lib/outputrenderers.php on line 1263 Call Stack # Time Memory Function Location 1 0.0007 777816 {main}( ) ../view.php:0 2 1.2397 79233136 core_renderer->header( ) ../view.php:240 3 1.2487 79298968 core_renderer->render_page_layout( ) ../outputrenderers.php:777 4 1.2491 79418320 include( '/var/www/integration/theme/clean/layout/general.php' ) ../outputrenderers.php:847 5 1.5161 80373880 core_renderer->blocks_for_region( ) ../general.php:171 6 1.5161 80374616 core_renderer->block_move_target( ) ../outputrenderers.php:1245 {quote} To replicate: * Disable JS in your browser. * Log in as an admin. * Change to the clean theme. * Browse to a course. * Turn editing on. * Move all blocks to the right. * Click to move one of the blocks on the right. * Observe the error.",5 +"MDL-39675","05/14/2013 20:57:10","Text overlap in HTMLEditor in Bootstrap theme","Add a few lines of text into HTML Editor, anywhere in Moodle, and the text overlaps the right margin of the Editor. This has definitely just been introduced, have been using Bootstrap in Moodle lots in recent builds, has been introduced in last couple of days I reckon. Is fine when switched to Standard theme, only affects 'Clean' theme, i.e. fix in Bootstrap-base.",13 +"MDL-39736","05/20/2013 02:27:56","SCORM content section is too narrow on narrow screen devices","on devices <960px wide, there is not enough space to display the whole SCORM panel.",20 +"MDL-39737","05/20/2013 02:29:01","SCORM does not reflow on resize/orientation change","When using a mobile device, swapping from landscape to portrait does not cause the SCORM panel to resize",20 +"MDL-39746","05/20/2013 04:59:52","On discussion page, user name is overlapping with profile picture","This occurs in iPod touch/iPhone4s potrait view.",5 +"MDL-39748","05/20/2013 05:22:18","Make input boxes' size consistent and not overlapping with the next level in Assignment advanced grading. ","Using advanced grading: # Add new criteria and edit the levels - the size of the input boxes for name and points are too wide and overlap with the next level. # Add new level for the criteria - input text for the name is smaller than the point input text. The size of input boxes should be consistent. Testing this with iPod touch and iPhone4s. Replication steps: # Create assignment # Set grading method to rubric # From side block select: assignment admin > Advanced grading > define rubric # On rubric section, click the edit level and add level sections. ",8 +"MDL-39749","05/20/2013 06:45:36","Popup as File picker/Activity chooser should be mobile friendly","At the moment the file picker has many issues that make it not mobile friendly: * button, icon, text, everything is quite small * the popup should be static, fill the entire screen, ... there is no need to restrict the file picker to a portion of the screen neither it needs to be drag around the screen. * the upload form is displayed by default but there is no need to display it. On mobile the user should click on the repository upload and it triggers the OS picker then the file form is displayed and filled up with the picked file info. ... Obviously all this need specs first as it needs some brainstorming on the user behaviors/expectation and it also implies some technical challenges. ",100 +"MDL-39750","05/20/2013 06:52:52","Fullscreen activity chooser on tablet screens","The activity chooser is already designed for mobile. It skipped most information (icon + description) from the desktop version, and is just a select box. I don't think it's an issue as most teacher probably knows what they are. I am just reporting it so we agree if the activity chooser needs works or not (we recently mentioned we needed to fix it but actually forgot it was already working quite well on mobile). ",8 +"MDL-39769","05/21/2013 05:05:55","taking photos via file picker results in a huge sideways photo","While editing my profile I went to the description field (tinymce), clicked image, selected ""upload a file"", clicked ""choose a file"" then ""take photo or video"". I was holding my phone (iphone 3gs) sideways at the time and took a photo. The resulting photo is huge and sideways and I dont seem to have any obvious way to scale it down or rotate it. This could be solved by adding a form that allows resizing and rotating images added via the file picker. It would be great to have this on the desktop too.",40 +"MDL-39770","05/21/2013 05:14:54","The chat activity window is poorly suited to a phone","It does work fine however its just the desktop window scaled down so theres lots of white space and the text is really small. Zooming in to make the text readable results in the need to scroll back and forth to read incoming messages and to then type your own.",20 +"MDL-39771","05/21/2013 05:27:05","Embedded URL resource doesnt seem to load on an iphone 3gs","I created an iphone resource, set to embedded, set the url to http://moodle.org and saved. The iframe appears but its just a big white box. Setting it to ""popup"" makes the URL open in a new tab.",13 +"MDL-39776","05/21/2013 07:48:01","Adding new block doesn't automatically add the block to the page.","Samsung tab II: Chrome and Stock browsers. On frontpage: adding new block doesn't automatically add the block to the page. It requires tapping the select option box to initiate the process.",13 +"MDL-39779","05/21/2013 10:02:10","Fix alignment for required field (red *) on creating new wiki page","On mobile device, the ""required field"" indication is displayed above the input options.",3 +"MDL-39782","05/22/2013 03:35:23","Clean - Categories and Items, move grade item screen is squished.","See screenshot. Go into a course containing a few grade item and at least one category. Go to the simple categories and items screen within the gradebook. Click the move icon next to a grade item. Squished screen is displayed.",5 +"MDL-39792","05/23/2013 02:18:25","Editor goes under right-hand blocks on smaller screens","Attached screenshot shows the problem on 2.5 theme on imoot.org We need a solution for this folks.",20 +"MDL-39794","05/23/2013 05:11:38","When editing is on for the front page, then always show the ""Add course"" button under the current courses.","We currently show the ""Add course"" button when there are no courses, which is awesome, but it needs to also be there all the time when in editing mode. It makes things obvious (currently adding courses is buried in menus). It also reduces effort a lot when adding several courses at once.",5 +"MDL-39796","05/23/2013 05:16:28","Multiple select options displays as empty box","Samsung tab2 and stock browser: Multiple select options displays as empty box (it looks like input text box). Tabbing on the box will then display the list of options.",3 +"MDL-39812","05/24/2013 04:04:13","Long Breadcrumbs get wrapped on narrow screens when using Clean Theme","The bread crumbs do not wrap nicely",20 +"MDL-39813","05/24/2013 04:05:51","Login page is overly verbose for a mobile device","We could either hide some of the text, or redesign the page completely.",3 +"MDL-39814","05/24/2013 04:07:50","Improve editing icons for usability on all types of screens","Editing icons are sometimes messy and confusing, as well as being small and hard to hit on mobile platforms. This issue is about finding a solution that simplifies the display a lot by reducing available options, while trying not to slow things down for power users who are heavily engaged in creating/editing/moving/configuring activities. It needs to work on smartphones as well as on large desktops. There may be user preferences involved.",40 +"MDL-39815","05/24/2013 04:18:07","Printer-friendly version link can be improved","Would be great if it auto-triggered the print function of the browser, and if the icon was a little nicer, and maybe had some text beside it to explain it better.",3 +"MDL-39844","05/27/2013 03:54:12","Define and implement the event base class","Define the base class for the event system. http://docs.moodle.org/dev/Event_2#Stage_1",20 +"MDL-39845","05/27/2013 03:55:18","Define the new observers API","http://docs.moodle.org/dev/Event_2#Stage_1 Describe new observer definition - just few new flags in current db/events.php",20 +"MDL-39846","05/27/2013 03:57:11","Define new event dispatcher behaviour and implement it","1/ Describe new event dispatcher http://docs.moodle.org/dev/Event_2#Stage_1 2/ Implement new event dispatching 3/ Add phpunit support for event observation",20 +"MDL-39848","05/27/2013 03:59:48","Check coverage of unit tests for new events API","Write unit tests for anything that was not covered in previous issues. Create new event handler management class that deals with installation and upgrades of both legacy and new handlers. http://docs.moodle.org/dev/Event_2#Stage_1",5 +"MDL-39850","05/27/2013 04:20:10","Pre and post performance profiling","Decide and implement performance tests, to measure the impact of the changes.",5 +"MDL-39852","05/27/2013 06:37:08","Adjust file picker / activity chooser forms to full screen popup.","Forms need to be tweaked to be usable on the new full screen popup. List of elements to tweak: - the details view/list view/folder view icons could be a bit bigger, easier to touch. - the label / input should be displayed at a reasonable distance of the border - there should be a bar/separation between the last selected repository and the repository form top bar.",0 +"MDL-39854","05/27/2013 11:03:30","Automatic class loading","It would be nice to have an official class loader for Frankenstyle based class names in Moodle core. See http://docs.moodle.org/dev/Automatic_Class_Loading_Proposal",40 +"MDL-39873","05/28/2013 09:03:14","check usage of class_exists to avoid usage of autoloading","Currently class_exits is not passing second parameter as false, in blocklib.php and pluginlib.php, because of which autoloader is called and hence can hit performance with autoloader functionality. Look at other usage of class_exists function and pass second param as false, where appropriate. http://php.net/manual/en/function.class-exists.php",5 +"MDL-39883","05/28/2013 20:09:06","Duplicating activity on course page does not fire any event","I would like to see here a new event mod_duplicated. This way we could always inform whoever is hooked to the event what just happened. The change would imply small modification to the course/modduplicate.php mod_duplicated - int courseid, int cmid, int origcmid, text modulename ",13 +"MDL-39884","05/29/2013 00:35:21","Improvement: have the header on bootstrapbase remain onscreen when scrolling on mobile devices.","Hi, I found that the header menu moves away by scrolling the window content when the width is small. I think that the header menu should always stay at the top of a window. Ralf",13 +"MDL-39888","05/29/2013 06:10:05","Replace usages of the log table in auth/mnet/auth.php","See [usages|http://docs.moodle.org/dev/Logging_usage#auth.2Fmnet.2Fauth.php].",20 +"MDL-39933","05/30/2013 04:18:09","Implement external database log storage plugin","Implement external database log storage. It should be possible to disable.",100 +"MDL-39949","05/31/2013 01:12:15","Block without header causes JS error on page","Updated description: Reporter noticed a Javascript error in some courses' pages in editing mode. It causes activity chooser to fail to work. If blocks without headings are removed, JS code starts working again so presumably presence of those blocks causes the error. ----- Original description: Thread here: https://moodle.org/mod/forum/discuss.php?d=228086#p997260 Upgraded to 2.5 from 2.3 this week, initially used an incomplete zip file. Subsequently corrected. Since then the Activity Chooser behaves inconsistently in courses. Case 1 In some courses it is greyed out. Switching it off allows the drop-down lists to work - but only if you quickly select an option, otherwise it fails - jumpto.php appears to get an empty string in this case and also drag and drop of course items does not work. Case 2 In some other courses, using the Activity Chooser to select an activity or resource generates an error on selection of the activity or resource. Switching off the Activity chooser allows selection properly through the drop-down lists. In these course drag and drop of items works as expected. We are using Moodle 2.5+ (Build: 20130524) on SQL SERVER 2008 MS SQL 10.5.250 PHP 5.3.18 FreeTDS drivers. Upgrade error was reported in MDL-39869 (closed). ",3 +"MDL-39950","05/31/2013 03:33:20","Reproduce log reports to use the new logging system (log and loglive)","Convert reports /report/log/ and /report/loglive/ to the new API Reports must work nicely with both log_legacy and log_standard # Alter reports to accept new event object instances instead of array data. # Alter reports to understand new event properties. # For each report add a setting which log reader to use # Deprecate function print_log(), move html to corresponding renderers # Deprecate functions print_log_ods(), print_log_csv(), print_log_xls() - they should all be part of /report/log/ # Deprecate function build_logs_array() # Deprecate function get_logs_usercourse(), move code into /report/log/",40 +"MDL-39953","05/31/2013 04:39:55","Replace Legacy events - Blogs","Replace all legacy events related to blogs. blog/locallib.php: events_trigger('blog_entry_added', $this); blog/locallib.php: events_trigger('blog_entry_edited', $entry); blog/locallib.php: events_trigger('blog_entry_deleted', $this);",20 +"MDL-39954","05/31/2013 04:41:08","Replace Legacy events - Assessable content","Replace all legacy events related to Assessable content. mod/assign/locallib.php: events_trigger('assessable_submitted', $eventdata); mod/assign/locallib.php: events_trigger('assessable_submitted', $eventdata); mod/assign/locallib.php: events_trigger('assessable_submitted', $eventdata); mod/assign/submission/file/locallib.php: events_trigger('assessable_file_uploaded', $eventdata); mod/assign/submission/onlinetext/locallib.php: events_trigger('assessable_content_uploaded', $eventdata); mod/assignment/type/online/assignment.class.php: events_trigger('assessable_content_uploaded', $eventdata); mod/assignment/type/upload/assignment.class.php: events_trigger('assessable_file_uploaded', $eventdata); mod/assignment/type/upload/assignment.class.php: events_trigger('assessable_files_done', $eventdata); mod/assignment/type/uploadsingle/assignment.class.php: events_trigger('assessable_file_uploaded', $eventdata); mod/forum/lib.php: events_trigger('assessable_content_uploaded', $eventdata); mod/workshop/submission.php: events_trigger('assessable_content_uploaded', $eventdata);",40 +"MDL-39955","05/31/2013 04:42:15","Replace Legacy events - Completion","Replace all legacy events related to completion. lib/completionlib.php: events_trigger('activity_completion_changed', $data); completion/completion_completion.php: events_trigger('course_completed', $this->get_record_data());",20 +"MDL-39956","05/31/2013 04:42:58","Replace Legacy events - Cohort","Replace all legacy events related to cohort. cohort/lib.php: events_trigger('cohort_added', $cohort); cohort/lib.php: events_trigger('cohort_updated', $cohort); cohort/lib.php: events_trigger('cohort_deleted', $cohort); cohort/lib.php: events_trigger('cohort_member_added', (object)array('cohortid'=>$cohortid, 'userid'=>$userid)); cohort/lib.php: events_trigger('cohort_member_removed', (object)array('cohortid'=>$cohortid, 'userid'=>$userid));",8 +"MDL-39957","05/31/2013 04:44:14","Replace Legacy events - Course","Replace all legacy events related to course. course/lib.php: events_trigger('course_created', $course); course/lib.php: events_trigger('course_updated', $course); lib/moodlelib.php: events_trigger('course_deleted', $course); lib/moodlelib.php: events_trigger('course_content_removed', $course); lib/coursecatlib.php: events_trigger('course_category_deleted', $this); lib/coursecatlib.php: events_trigger('course_category_deleted', $this); backup/util/plan/restore_plan.class.php: events_trigger('course_restored', (object) array(",20 +"MDL-39958","05/31/2013 04:44:45","Replace Legacy events - Groups","Replace all legacy events related to Groups. group/lib.php: events_trigger('groups_member_added', $eventdata); group/lib.php: events_trigger('groups_member_removed', $eventdata); group/lib.php: events_trigger('groups_group_created', $group); group/lib.php: events_trigger('groups_grouping_created', $data); group/lib.php: events_trigger('groups_group_updated', $group); group/lib.php: events_trigger('groups_grouping_updated', $data); group/lib.php: events_trigger('groups_group_deleted', $group); group/lib.php: events_trigger('groups_grouping_deleted', $grouping); Plurals: group/lib.php: events_trigger('groups_members_removed', $eventdata); group/lib.php: events_trigger('groups_groupings_groups_removed', $courseid); group/lib.php: events_trigger('groups_groups_deleted', $courseid); group/lib.php: events_trigger('groups_groupings_deleted', $courseid);",20 +"MDL-39959","05/31/2013 04:45:50","Replace Legacy events - module","Replace all legacy events related to module. course/dnduploadlib.php: events_trigger('mod_created', $eventdata); course/lib.php: events_trigger('mod_deleted', $eventdata); All places where course modules are created, updated(?) or deleted.",20 +"MDL-39960","05/31/2013 04:46:48","Replace Legacy events - role","Replace all legacy events related to role. lib/accesslib.php: events_trigger('role_assigned', $ra); lib/accesslib.php: events_trigger('role_unassigned', $ra); lib/accesslib.php: events_trigger('role_unassigned', $ra); ",8 +"MDL-39961","05/31/2013 04:47:50","Replace Legacy events - User","Replace all legacy events related to User. admin/tool/uploaduser/index.php: events_trigger('user_updated', $existinguser); admin/tool/uploaduser/index.php: events_trigger('user_created', $user); admin/user.php: events_trigger('user_updated', $user); admin/user.php: events_trigger('user_updated', $user); auth/email/auth.php: events_trigger('user_created', $user); auth/ldap/auth.php: events_trigger('user_created', $user); lib/enrollib.php: events_trigger('user_enrolled', $ue); lib/enrollib.php: events_trigger('user_enrol_modified', $ue); lib/enrollib.php: events_trigger('user_enrol_modified', $ue); lib/enrollib.php: events_trigger('user_unenrolled', $ue); lib/enrollib.php: events_trigger('user_unenrolled', $ue); lib/eventslib.php:function events_trigger($eventname, $eventdata) { lib/moodlelib.php: events_trigger('user_logout', $params); lib/moodlelib.php: events_trigger('user_created', $DB->get_record('user', array('id'=>$user->id))); lib/moodlelib.php: events_trigger('user_updated', $DB->get_record('user', array('id'=>$oldinfo->id))); lib/moodlelib.php: events_trigger('user_deleted', $user); enrol/manual/locallib.php: events_trigger('user_enrol_modified', $enrolment); user/edit.php: events_trigger('user_updated', $usernew); user/editadvanced.php: events_trigger('user_created', $usernew); user/editadvanced.php: events_trigger('user_updated', $usernew); user/emailupdate.php: events_trigger('user_updated', $user); user/lib.php: events_trigger('user_created', $newuser); user/lib.php: events_trigger('user_updated', $updateduser); Please also check user/lib.php user_update_users() from MDL-34422 (if it has been integrated) events_trigger('user_updated', $user); ",40 +"MDL-39962","05/31/2013 04:49:18","Replace Legacy events - Mixed","Replace all legacy events related to lti,workshop. workshop_viewed lti_unknown_service_api_call *Replace event handlers with event observers.* mod/workshop/allocation/scheduled/db/events.php * workshopallocation_scheduled_workshop_viewed Edit - quiz events moved to a separate issue. portfolio_send also moved to a separate issue. ",20 +"MDL-39963","05/31/2013 04:49:50","Legacy events and addtolog() Cleanup","# Make sure there is no remaining addtolog() calls in core, or agree on whether they should be deprecated but kept for a while or not. # -Make sure there is no legacy events left in core.- see MDL-45055 # -Make sure all new events use the correct naming convention.- see MDL-43557 # -Create a mapping list, listing all old events/addtolog() and respective new event. Add this list to docs.- See MDL-44637 # -Cleanup lib/db/events.php, either delete all events listing or add all new events to the list.- see MDL-45052 # once MDL-40997 is resolved, make sure all existing events have the legacyassertions when needed. # -implement can_view() for all events.- see MDL-44107 ",40 +"MDL-40003","06/03/2013 22:43:47","Assignment submission comments are not restored","If ""Submission comments"" is set to yes in an assignment and comments are made against a submission then when the course or activity is then backed up and restored with ""Comments"" and user data, the comments are not restored.",5 +"MDL-40034","06/06/2013 05:36:21","Epic: File API improvements to handle clustering environments","This has been talked about for many years but appears not to have an issue filed for it. Moodle Files currently go into dataroot directory on the server filesystem. This can cause problems when Moodle is used in server cluster environments where there may not even be local filesystems, when synchronisation is required across potentially many web servers. This issue is the starting point for solving this problem. 1) Collect solutions/ideas/hacks from the community and discuss. 2) Define a specification for core implementation in Moodle 3) Split into subtasks under this issue. 4) Complete the implementation.",40 +"MDL-40037","06/06/2013 07:56:52","POLICY: Decide if we should allow context to be exposed by WS or not","Decide the final stand on if we should allow or not context ids in any ws api *Decision: Use of contextid, can be provided optionally. Every WS api, must implement an alternative way , that doesn't require contextids.*",13 +"MDL-40039","06/06/2013 08:02:05","Add alternative to contextid for core_files_external::upload","Add alternative to contextid for core_files_external::upload, contextid shouldn't be a required field as per the discussion on MDL-40037 ",5 +"MDL-40040","06/06/2013 08:10:27","Replace add_to_log with an event trigger - Blog","Replace the add_to_log calls for the following area, with a call to the get_legacy_logdata function in the event class. *blog/ (6 calls)* /blog/index.php:227: add_to_log($courseid, 'blog', 'view', 'index.php?entryid='.$entryid.'&tagid='.@$tagid.'&tag='.$tag, 'view blog entry'); /blog/locallib.php:262: add_to_log(SITEID, 'blog', 'add', 'index.php?userid='.$this->userid.'&entryid='.$this->id, $this->subject); /blog/locallib.php:299: add_to_log(SITEID, 'blog', 'update', 'index.php?userid='.$USER->id.'&entryid='.$entry->id, $entry->subject); /blog/locallib.php:317: add_to_log(SITEID, 'blog', 'delete', 'index.php?userid='. $this->userid, 'deleted blog entry with entry id# '. $this->id); /blog/locallib.php:356: add_to_log($courseid, 'blog', $action, 'index.php?userid='.$this->userid.'&entryid='.$this->id, $this->subject); /blog/locallib.php:360: add_to_log($cm->course, 'blog', $action, 'index.php?userid='.$this->userid.'&entryid='.$this->id, $this->subject, $cm->id, $this->userid);",20 +"MDL-40041","06/06/2013 08:11:58","Replace add_to_log with an event trigger - Course","Replace the add_to_log calls in the following directory, with new events which contains the same information: * course/ (21 calls) ",40 +"MDL-40042","06/06/2013 08:13:11","Replace add_to_log with an event trigger - completion","Replace the add_to_log calls in the following directories, with new events which contains the same information: *Completion* /course/completion.php:138: add_to_log($course->id, 'course', 'completion updated', 'completion.php?id='.$course->id); /report/completion/user.php:53: add_to_log($course->id, 'course', 'report completion', ""report/completion/user.php?id=$user->id&course=$course->id"", $course->id);",20 +"MDL-40043","06/06/2013 08:15:13","Replace add_to_log with an event trigger - course","Replace the add_to_log calls in the following directories, with new events which contains the same information: *Course* /course/recent.php:41: add_to_log($course->id, ""course"", ""recent"", ""recent.php?id=$course->id"", $course->id); /course/delete.php:68: add_to_log(SITEID, ""course"", ""delete"", ""view.php?id=$course->id"", ""$course->fullname (ID $course->id)""); /course/manage.php:252: add_to_log($course->id, ""course"", ($visible ? 'show' : 'hide'), ""edit.php?id=$course->id"", $course->id); /course/manage.php:280: add_to_log($movecourse->id, ""course"", ""move"", ""edit.php?id=$movecourse->id"", $movecourse->id); /course/lib.php:2041: add_to_log($course->id, ""course"", ""move"", ""edit.php?id=$course->id"", $course->id); /course/lib.php:2291: add_to_log(SITEID, 'course', 'new', 'view.php?id='.$course->id, $data->fullname.' (ID '.$course->id.')'); /course/lib.php:2380: add_to_log($course->id, ""course"", ""update"", ""edit.php?id=$course->id"", $course->id); /course/user.php:108: add_to_log($course->id, ""course"", ""user report"", ""user.php?id=$course->id&user=$user->id&mode=$mode"", ""$user->id""); /course/editsection.php:72: add_to_log($course->id, ""course"", ""editsection"", ""editsection.php?id=$id"", ""$sectionnum""); /course/view.php:117: add_to_log($course->id, 'course', $loglabel, ""view.php?"". $logparam, $infoid); /course/loginas.php:70: add_to_log($course->id, ""course"", ""loginas"", ""../user/view.php?id=$course->id&user=$userid"", ""$oldfullname -> $newfullname""); /index.php:79: add_to_log(SITEID, 'course', 'view', 'view.php?id='.SITEID, SITEID); ",20 +"MDL-40044","06/06/2013 08:16:31","Replace add_to_log with an event trigger - role","Replace the add_to_log calls for the following area, with a call to the get_legacy_logdata function in the event class. *role* /admin/roles/manage.php:93: add_to_log(SITEID, 'role', 'delete', 'admin/roles/manage.php', $roles[$roleid]->localname, '', $USER->id); /admin/roles/override.php:128: add_to_log($course->id, 'role', 'override', 'admin/roles/override.php?contextid='.$context->id.'&roleid='.$roleid, $rolename, '', $USER->id); /admin/roles/assign.php:114: add_to_log($course->id, 'role', 'assign', 'admin/roles/assign.php?contextid='.$context->id.'&roleid='.$roleid, $rolename, '', $USER->id); /admin/roles/assign.php:134: add_to_log($course->id, 'role', 'unassign', 'admin/roles/assign.php?contextid='.$context->id.'&roleid='.$roleid, $rolename, '', $USER->id); /admin/roles/define.php:199: add_to_log(SITEID, 'role', $action, 'admin/roles/define.php?action=view&roleid=' . /admin/roles/allow.php:49: add_to_log(SITEID, 'role', 'edit allow ' . $mode, str_replace($CFG->wwwroot . '/', '', $baseurl), '', '', $USER->id); /lib/accesslib.php:1524: add_to_log(SITEID, 'role', 'delete', 'admin/roles/action=delete&roleid='.$roleid, $rolename, ''); ",13 +"MDL-40045","06/06/2013 08:18:47","Replace add_to_log with an event trigger - User","Replace the add_to_log calls for the following area, with a call to the get_legacy_logdata function in the event class. /user/index.php:89: add_to_log($course->id, 'user', 'view all', 'index.php?id='.$course->id, ''); /user/view.php:191: add_to_log($course->id, ""user"", ""view"", ""view.php?id=$user->id&course=$course->id"", ""$user->id""); /auth/ldap/auth.php:1739: add_to_log(SITEID, 'user', 'login', ""view.php?id=$USER->id&course="".SITEID, /auth/shibboleth/index.php:65: add_to_log(SITEID, 'user', 'login', ""view.php?id=$USER->id&course="".SITEID, $USER->id, 0, $USER->id); /login/change_password.php:123: add_to_log($course->id, 'user', 'change password', ""view.php?id=$USER->id&course=$course->id"", ""$USER->id"");",20 +"MDL-40046","06/06/2013 08:20:47","Replace add_to_log with an event trigger - mod_page","Replace the add_to_log calls for the following area, with a call to the get_legacy_logdata function in the event class. *mod/page* /mod/page/index.php:36:add_to_log($course->id, 'page', 'view all', ""index.php?id=$course->id"", ''); /mod/page/view.php:54:add_to_log($course->id, 'page', 'view', 'view.php?id='.$cm->id, $page->id, $cm->id); ",20 +"MDL-40047","06/06/2013 08:23:08","Replace add_to_log with an event trigger - mod_feedback","Replace the add_to_log calls for the following area, with a call to the get_legacy_logdata function in the event class. *mod/feedback (6 calls)* /mod/feedback/complete_guest.php:213: add_to_log($course->id,'feedback', 'startcomplete', 'view.php?id='.$cm->id, $feedback->id); /mod/feedback/index.php:43: add_to_log($course->id, 'feedback', 'view all', $url->out(false), $course->id); /mod/feedback/delete_completed.php:79: add_to_log($course->id, 'feedback', 'delete', 'view.php?id='.$cm->id, $feedback->id, $cm->id); /mod/feedback/complete.php:269: add_to_log($course->id, 'feedback', 'submit', 'view.php?id='.$cm->id, $feedback->id, $cm->id, $userid); /mod/feedback/complete.php:213: add_to_log($course->id, 'feedback', 'startcomplete', 'view.php?id='.$cm->id, $feedback->id, $cm->id, $userid); /mod/feedback/view.php:100: add_to_log($course->id, 'feedback', 'view', 'view.php?id='.$cm->id, $feedback->id, $cm->id);",20 +"MDL-40048","06/06/2013 08:24:12","Replace add_to_log with an event trigger - mod_chat","Replace the add_to_log calls for the following area, with a call to the get_legacy_logdata function in the event class. *mod/chat (6 calls)* /mod/chat/chat_ajax.php:94: add_to_log($course->id, 'chat', 'talk', ""view.php?id=$cm->id"", $chat->id, $cm->id); /mod/chat/report.php:50: add_to_log($course->id, 'chat', 'report', ""report.php?id=$cm->id"", $chat->id, $cm->id); /mod/chat/index.php:17: add_to_log($course->id, 'chat', 'view all', ""index.php?id=$course->id"", ''); /mod/chat/gui_header_js/insert.php:61: add_to_log($course->id, 'chat', 'talk', ""view.php?id=$cm->id"", $chat->id, $cm->id); /mod/chat/gui_basic/index.php:108: add_to_log($course->id, 'chat', 'talk', ""view.php?id=$cm->id"", $chat->id, $cm->id); /mod/chat/view.php:73: add_to_log($course->id, 'chat', 'view', ""view.php?id=$cm->id"", $chat->id, $cm->id);",20 +"MDL-40049","06/06/2013 08:26:45","Replace add_to_log with an event trigger - mod_choice","Replace the add_to_log calls for the following area, with a call to the get_legacy_logdata function in the event class. *mod/choice (5 calls)* /mod/choice/report.php:46: add_to_log($course->id, ""choice"", ""report"", ""report.php?id=$cm->id"", ""$choice->id"",$cm->id); /mod/choice/index.php:17: add_to_log($course->id, ""choice"", ""view all"", ""index.php?id=$course->id"", """"); /mod/choice/lib.php:296: add_to_log($course->id, ""choice"", ""choose again"", ""view.php?id=$cm->id"", $choice->id, $cm->id); /mod/choice/lib.php:310: add_to_log($course->id, ""choice"", ""choose"", ""view.php?id=$cm->id"", $choice->id, $cm->id); /mod/choice/view.php:79: add_to_log($course->id, ""choice"", ""view"", ""view.php?id=$cm->id"", $choice->id, $cm->id);",20 +"MDL-40050","06/06/2013 08:27:44","Replace add_to_log with an event trigger - webservices","Replace the add_to_log calls for the following area, with a call to the get_legacy_logdata function in the event class. *webservices* /webservice/lib.php:74: add_to_log(SITEID, 'webservice', get_string('tokenauthlog', 'webservice'), '', get_string('invalidtimedtoken', 'webservice'), 0); /webservice/lib.php:81: add_to_log(SITEID, 'webservice', get_string('tokenauthlog', 'webservice'), '', get_string('failedtolog', 'webservice') . "": "" . getremoteaddr(), 0); /webservice/lib.php:145: add_to_log(SITEID, 'webservice', 'user unconfirmed', '', $user->username); /webservice/lib.php:151: add_to_log(SITEID, 'webservice', 'user suspended', '', $user->username); /webservice/lib.php:157: add_to_log(SITEID, 'webservice', 'nologin auth attempt with web service', '', $user->username); /webservice/lib.php:166: add_to_log(SITEID, 'webservice', 'expired password', '', $user->username); /webservice/lib.php:850: add_to_log(SITEID, 'webservice', get_string('simpleauthlog', 'webservice'), '' , get_string('failedtolog', 'webservice')."": "".$this->username.""/"".$this->password."" - "".getremoteaddr() , 0); /webservice/lib.php:870: add_to_log(SITEID, '', '', '', get_string('wsaccessuserdeleted', 'webservice', $user->username) . "" - "".getremoteaddr(), 0, $user->id); /webservice/lib.php:876: add_to_log(SITEID, '', '', '', get_string('wsaccessuserunconfirmed', 'webservice', $user->username) . "" - "".getremoteaddr(), 0, $user->id); /webservice/lib.php:882: add_to_log(SITEID, '', '', '', get_string('wsaccessusersuspended', 'webservice', $user->username) . "" - "".getremoteaddr(), 0, $user->id); /webservice/lib.php:895: add_to_log(SITEID, '', '', '', get_string('wsaccessuserexpired', 'webservice', $user->username) . "" - "".getremoteaddr(), 0, $user->id); /webservice/lib.php:902: add_to_log(SITEID, '', '', '', get_string('wsaccessusernologin', 'webservice', $user->username) . "" - "".getremoteaddr(), 0, $user->id); /webservice/lib.php:929: add_to_log(SITEID, 'webservice', get_string('tokenauthlog', 'webservice'), '' , get_string('failedtolog', 'webservice')."": "".$this->token. "" - "".getremoteaddr() , 0); /webservice/lib.php:947: add_to_log(SITEID, 'webservice', get_string('tokenauthlog', 'webservice'), '' , get_string('failedtolog', 'webservice')."": "".getremoteaddr() , 0); /webservice/lib.php:1061: add_to_log(SITEID, 'webservice', '', '' , $this->zend_class."" "".getremoteaddr() , 0, $this->userid); /webservice/lib.php:1522: add_to_log(SITEID, 'webservice', $this->functionname, '' , getremoteaddr() , 0, $this->userid); /admin/webservice/service.php:61: add_to_log(SITEID, 'webservice', 'delete', $returnurl, get_string('deleteservice', 'webservice', $service)); /admin/webservice/service.php:78: add_to_log(SITEID, 'webservice', 'add', $returnurl, get_string('addservice', 'webservice', $servicedata)); /admin/webservice/service.php:88: add_to_log(SITEID, 'webservice', 'edit', $returnurl, get_string('editservice', 'webservice', $servicedata)); /admin/webservice/service_users.php:60: add_to_log(SITEID, 'core', 'assign', $CFG->admin . '/webservice/service_users.php?id=' /admin/webservice/service_users.php:74: add_to_log(SITEID, 'core', 'assign', $CFG->admin . '/webservice/service_users.php?id=' *webservice (login)* /login/token.php:164: add_to_log(SITEID, 'webservice', 'automatically create user token', '' , 'User ID: ' . $user->id); /login/token.php:174: add_to_log(SITEID, 'webservice', 'sending requested user token', '' , 'User ID: ' . $user->id);",40 +"MDL-40051","06/06/2013 08:28:12","Replace add_to_log with an event trigger - misc","Replace the add_to_log calls for the following area, with a call to the get_legacy_logdata function in the event class. *lib* /lib/uploadlib.php:772: add_to_log($courseid, 'upload', 'upload', ((!$nourl) ? substr($_SERVER['HTTP_REFERER'], 0, 100) : ''), $newfilepath); /lib/uploadlib.php:786: add_to_log(0, 'upload', 'infected', $_SERVER['HTTP_REFERER'], $oldfilepath, 0, $userid); /lib/moodlelib.php:5791: add_to_log(SITEID, 'library', 'mailer', qualified_me(), 'ERROR: '. $mail->ErrorInfo); *mnet* /mnet/lib.php:446: add_to_log(SITEID, 'admin/mnet', 'update', 'admin/mnet/access_control.php', /mnet/lib.php:455: add_to_log(SITEID, 'admin/mnet', 'add', 'admin/mnet/access_control.php', *report* /report/questioninstances/index.php:38: add_to_log(SITEID, ""admin"", ""report questioninstances"", ""report/questioninstances/index.php?qtype=$requestedqtype"", $requestedqtype); *admin/tool* /admin/tool/capability/index.php:95: add_to_log(SITEID, ""admin"", ""tool capability"", ""tool/capability/index.php"", count($capabilities));",20 +"MDL-40052","06/06/2013 08:28:37","Replace add_to_log with an event trigger - course reports","Replace the add_to_log calls for the following area, with a call to the get_legacy_logdata function in the event class. *course / reports* /report/participation/index.php:66: add_to_log($course->id, ""course"", ""report participation"", ""report/participation/index.php?id=$course->id"", $course->id); /report/log/index.php:118: add_to_log($course->id, ""course"", ""report log"", ""report/log/index.php?id=$course->id"", $course->id); /report/log/graph.php:70: add_to_log($course->id, 'course', 'report log', ""report/log/graph.php?user=$user->id&id=$course->id&type=$type&date=$date"", $course->id); /report/log/user.php:65: add_to_log($course->id, 'course', 'report log', ""report/log/user.php?id=$user->id&course=$course->id&mode=$mode"", $course->id); /report/loglive/index.php:51: add_to_log($course->id, 'course', 'report live', ""report/loglive/index.php?id=$course->id"", $course->id); /report/stats/index.php:70: add_to_log($course->id, ""course"", ""report stats"", ""report/stats/index.php?course=$course->id"", $course->id); /report/stats/graph.php:65: add_to_log($course->id, 'course', 'report stats', ""report/stats/graph.php?userid=$userid&id=$course->id&mode=$mode&roleid=$roleid"", $course->id); /report/stats/user.php:52: add_to_log($course->id, 'course', 'report stats', ""report/stats/user.php?id=$user->id&course=$course->id"", $course->id); /report/outline/index.php:40: add_to_log($course->id, 'course', 'report outline', ""report/outline/index.php?id=$course->id"", $course->id); /report/outline/user.php:56: add_to_log($course->id, 'course', 'report outline', ""report/outline/user.php?id=$user->id&course=$course->id&mode=$mode"", $course->id);",20 +"MDL-40053","06/06/2013 08:28:56","Replace add_to_log with an event trigger - notes","Replace the add_to_log calls for the following area, with a call to the get_legacy_logdata function in the event class. *notes* * /notes/index.php:64: add_to_log($courseid, 'notes', 'view', 'index.php?course='.$courseid.'&user='.$userid, 'view notes'); * /notes/lib.php:107: add_to_log($note->courseid, 'notes', 'add', $logurl, 'add note'); * /notes/lib.php:114: add_to_log($note->courseid, 'notes', 'update', $logurl , 'update note'); * /notes/lib.php:134: add_to_log($note->courseid, 'notes', 'delete', $logurl, 'delete note');",13 +"MDL-40054","06/06/2013 08:29:27","Replace add_to_log with an event trigger - mod_lesson","Replace the add_to_log calls for the following area, with a call to the get_legacy_logdata function in the event class. *mod/lesson (9 calls)* /mod/lesson/index.php:42: add_to_log($course->id, ""lesson"", ""view all"", ""index.php?id=$course->id"", """"); /mod/lesson/essay.php:133: add_to_log($course->id, 'lesson', 'update grade', ""essay.php?id=$cm->id"", $lesson->name, $cm->id); /mod/lesson/essay.php:247: add_to_log($course->id, 'lesson', 'update email essay grade', ""essay.php?id=$cm->id"", format_string($pages[$attempt->pageid]->title,true).': '.fullname($users[$attempt->userid]), $cm->id); /mod/lesson/essay.php:303: add_to_log($course->id, 'lesson', 'view grade', ""essay.php?id=$cm->id"", get_string('manualgrading', 'lesson'), $cm->id); /mod/lesson/highscores.php:149: add_to_log($course->id, 'lesson', 'update highscores', ""highscores.php?id=$cm->id"", $name, $cm->id); /mod/lesson/highscores.php:160: add_to_log($course->id, 'lesson', 'view highscores', ""highscores.php?id=$cm->id"", $lesson->name, $cm->id); /mod/lesson/view.php:182: add_to_log($course->id, 'lesson', 'start', 'view.php?id='. $cm->id, $lesson->id, $cm->id); /mod/lesson/view.php:286: add_to_log($PAGE->course->id, 'lesson', 'view', 'view.php?id='. $PAGE->cm->id, $page->id, $PAGE->cm->id); /mod/lesson/view.php:417: add_to_log($course->id, ""lesson"", ""end"", ""view.php?id="".$PAGE->cm->id, ""$lesson->id"", $PAGE->cm->id); ",40 +"MDL-40055","06/06/2013 08:29:57","Replace add_to_log with an event trigger - mod_assign","Replace the add_to_log calls for the following area, with a call to the get_legacy_logdata function in the event class. *mod/assign (26 calls)* /mod/assign/index.php:35: add_to_log($course->id, 'assign', 'view all', 'index.php?id=$course->id', ''); /mod/assign/locallib.php:2416: add_to_log($this->get_course()->id, *investigate this function* /mod/assign/locallib.php:2408: public function add_to_log($action = '', $info = '', $url='') { *And these lines:* /mod/assign/feedback/offline/locallib.php:167: $this->assignment->add_to_log('grade submission', $this->assignment->format_grade_for_log($grade)); /mod/assign/feedback/offline/locallib.php:195: $this->assignment->add_to_log('save grading feedback', $logdesc); /mod/assign/locallib.php:2110: $this->add_to_log('view submission', $logmessage); /mod/assign/locallib.php:2133: $this->add_to_log('view feedback', $logmessage); /mod/assign/locallib.php:2392: $this->add_to_log('download all submissions', get_string('downloadall', 'assign')); /mod/assign/locallib.php:2810: $this->add_to_log('view grading form', $msg); /mod/assign/locallib.php:2846: $this->add_to_log('view', get_string('viewrevealidentitiesconfirm', 'assign')); /mod/assign/locallib.php:3059: $this->add_to_log('view submission grading table', $logmessage); /mod/assign/locallib.php:3146: $this->add_to_log('view submit assignment form', get_string('viewownsubmissionform', 'assign')); /mod/assign/locallib.php:3367: $this->add_to_log('view batch set marking workflow state', get_string('viewbatchsetmarkingworkflowstate', 'assign')); /mod/assign/locallib.php:3428: $this->add_to_log('view batch set marker allocation', get_string('viewbatchmarkingallocation', 'assign')); /mod/assign/locallib.php:3481: $this->add_to_log('view confirm submit assignment form', $logmessage); /mod/assign/locallib.php:3828: $this->add_to_log('view', get_string('viewownsubmissionstatus', 'assign')); /mod/assign/locallib.php:4493: $this->add_to_log('submission statement accepted', $logmessage); /mod/assign/locallib.php:4495: $this->add_to_log('submit for grading', $this->format_submission_for_log($submission)); /mod/assign/locallib.php:4529: $this->add_to_log('grant extension', $userid); /mod/assign/locallib.php:4762: $this->add_to_log('grade submission', $this->format_grade_for_log($grade)); /mod/assign/locallib.php:4811: $this->add_to_log('reveal identities', get_string('revealidentities', 'assign')); /mod/assign/locallib.php:4999: $this->add_to_log('submissioncopied', $this->format_submission_for_log($submission)); /mod/assign/locallib.php:5105: $this->add_to_log('submission statement accepted', $logmessage); /mod/assign/locallib.php:5107: $this->add_to_log('submit', $this->format_submission_for_log($submission)); /mod/assign/locallib.php:5613: $this->add_to_log('revert submission to draft', $logmessage); /mod/assign/locallib.php:5652: $this->add_to_log('lock submission', $logmessage); /mod/assign/locallib.php:5692: $this->add_to_log('set marking workflow state', $message); /mod/assign/locallib.php:5734: $this->add_to_log('set marking allocation', $message); /mod/assign/locallib.php:5774: $this->add_to_log('unlock submission', $logmessage); /mod/assign/locallib.php:5831: $this->add_to_log('grade submission', $this->format_grade_for_log($grade)); ",40 +"MDL-40056","06/06/2013 08:30:22","Replace add_to_log with an event trigger - mod_scorm","Replace the add_to_log calls for the following area, with a call to the get_legacy_logdata function in the event class. *mod/scorm (11 calls)* /mod/scorm/loadSCO.php:159: add_to_log($course->id, 'scorm', 'launch', 'view.php?id='.$cm->id, $result, $cm->id); /mod/scorm/report.php:62: add_to_log($course->id, 'scorm', 'report', 'report.php?id='.$cm->id, $scorm->id, $cm->id); /mod/scorm/index.php:35: add_to_log($course->id, ""scorm"", ""view all"", ""index.php?id=$course->id"", """"); /mod/scorm/report/objectives/report.php:53: add_to_log($course->id, 'scorm', 'delete attempts', 'report.php?id=' . $cm->id, implode("","", $attemptids), $cm->id); /mod/scorm/report/basic/report.php:46: add_to_log($course->id, 'scorm', 'delete attempts', 'report.php?id=' . $cm->id, implode("","", $attemptids), $cm->id); /mod/scorm/report/interactions/report.php:47: add_to_log($course->id, 'scorm', 'delete attempts', 'report.php?id=' . $cm->id, implode("","", $attemptids), $cm->id); /mod/scorm/userreport.php:70: add_to_log($course->id, 'scorm', 'userreport', 'userreport.php?id='.$cm->id, $scorm->id, $cm->id); /mod/scorm/player.php:160: add_to_log($course->id, 'scorm', 'view', ""player.php?cm=$cm->id&scoid=$sco->id"", ""$scorm->id"", $cm->id); /mod/scorm/view.php:107: add_to_log($course->id, 'scorm', 'pre-view', 'view.php?id='.$cm->id, ""$scorm->id"", $cm->id); report/userreportinteractions.php:add_to_log($course->id, 'scorm', 'userreportinteractions', 'userreportinteractions.php?id='.$cm->id, $scorm->id, $cm->id) report/userreporttracks.php:add_to_log($course->id, 'scorm', 'userreporttracks', 'userreporttracks.php?id='.$id, $scorm->id, $id);",40 +"MDL-40057","06/06/2013 08:30:59","Replace add_to_log with an event trigger - mod_assignment","Replace the add_to_log calls for the following area, with a call to the get_legacy_logdata function in the event class. *mod/assignment (17 calls)* /mod/assignment/index.php:16: add_to_log($course->id, ""assignment"", ""view all"", ""index.php?id=$course->id"", """"); /mod/assignment/type/uploadsingle/assignment.class.php:68: add_to_log($this->course->id, ""assignment"", ""view"", ""view.php?id={$this->cm->id}"", $this->assignment->id, $this->cm->id); /mod/assignment/type/uploadsingle/assignment.class.php:239: add_to_log($this->course->id, 'assignment', 'upload', 'view.php?a='.$this->assignment->id, $this->assignment->id, $this->cm->id); /mod/assignment/type/upload/assignment.class.php:49: add_to_log($this->course->id, 'assignment', 'view', ""view.php?id={$this->cm->id}"", $this->assignment->id, $this->cm->id); /mod/assignment/type/upload/assignment.class.php:449: add_to_log($this->course->id, 'assignment', 'upload', 'view.php?a='.$this->assignment->id, $this->assignment->id, $this->cm->id); /mod/assignment/type/upload/assignment.class.php:515: add_to_log($this->course->id, 'assignment', 'upload', /mod/assignment/type/upload/assignment.class.php:636: add_to_log($this->course->id, 'assignment', 'upload', //TODO: add finalize action to log /mod/assignment/type/upload/assignment.class.php:676: add_to_log($this->course->id, 'assignment', 'upload', //TODO: add finalize action to log /mod/assignment/type/upload/assignment.class.php:704: add_to_log($this->course->id, 'assignment', 'view submission', 'submissions.php?id='.$this->cm->id.'&userid='.$userid.'&mode='.$mode.'&offset='.$offset, $this->assignment->id, $this->cm->id); /mod/assignment/type/upload/assignment.class.php:820: add_to_log($this->course->id, 'assignment', 'upload', //TODO: add delete action to log /mod/assignment/type/online/assignment.class.php:78: add_to_log($this->course->id, 'assignment', 'upload', 'view.php?a='.$this->assignment->id, $this->assignment->id, $this->cm->id); /mod/assignment/type/online/assignment.class.php:86: add_to_log($this->course->id, ""assignment"", ""view"", ""view.php?id={$this->cm->id}"", $this->assignment->id, $this->cm->id); /mod/assignment/type/offline/assignment.class.php:96: add_to_log($this->course->id, 'assignment', 'update grades', /mod/assignment/lib.php:159: add_to_log($this->course->id, ""assignment"", ""view"", ""view.php?id={$this->cm->id}"", /mod/assignment/lib.php:777: add_to_log($this->course->id, 'assignment', 'update grades', /mod/assignment/lib.php:1248: add_to_log($course->id, 'assignment', 'view submission', 'submissions.php?id='.$this->cm->id, $this->assignment->id, $this->cm->id); /mod/assignment/lib.php:1795: add_to_log($this->course->id, 'assignment', 'update grades',",40 +"MDL-40058","06/06/2013 08:31:20","Replace add_to_log with an event trigger - mod_wiki","Replace the add_to_log calls for the following area, with a call to the get_legacy_logdata function in the event class. *mod/wiki (17 calls)* /mod/wiki/overridelocks.php:80: add_to_log($course->id, ""wiki"", ""overridelocks"", ""view.php?pageid="".$pageid, $pageid, $cm->id); /mod/wiki/restoreversion.php:78: add_to_log($course->id, ""wiki"", ""restore"", ""view.php?pageid="".$pageid, $pageid, $cm->id); /mod/wiki/history.php:64: add_to_log($course->id, 'wiki', 'history', ""history.php?pageid="".$pageid, $pageid, $cm->id); /mod/wiki/admin.php:62: add_to_log($course->id, ""wiki"", ""admin"", ""admin.php?pageid="".$page->id, $page->id, $cm->id); /mod/wiki/map.php:61: add_to_log($course->id, ""wiki"", ""map"", ""map.php?pageid="".$pageid, $pageid, $cm->id); /mod/wiki/index.php:48: add_to_log($course->id, 'wiki', 'view', ""index.php?id="".$id, """"); /mod/wiki/diff.php:76: add_to_log($course->id, ""wiki"", ""diff"", ""diff.php?pageid="".$pageid.""&comparewith="".$comparewith.""&compare="".$compare, $pageid, $cm->id); /mod/wiki/create.php:110: add_to_log($course->id, 'wiki', 'add page', ""view.php?pageid="".$newpageid, $newpageid, $cm->id); /mod/wiki/create.php:117: add_to_log($course->id, 'wiki', 'add page', ""view.php?pageid="".$newpageid, $newpageid, $cm->id); /mod/wiki/edit.php:88: add_to_log($course->id, 'wiki', 'edit', ""view.php?pageid="".$pageid, $pageid, $cm->id); /mod/wiki/viewversion.php:68: add_to_log($course->id, ""wiki"", ""history"", ""viewversion.php?pageid="".$pageid.""&versionid="".$versionid, $pageid, $cm->id); /mod/wiki/instancecomments.php:102: add_to_log($course->id, 'wiki', 'comment', ""comments.php?pageid="".$pageid, $pageid, $cm->id); /mod/wiki/view.php:292: add_to_log($course->id, 'wiki', 'view', ""view.php?pageid="".$pageid, $pageid, $cm->id); /mod/wiki/view.php:294: add_to_log($course->id, 'wiki', 'view', ""view.php?id="".$id, $id, $cm->id); /mod/wiki/view.php:296: add_to_log($course->id, 'wiki', 'view', ""view.php?wid="".$wid.""&title="".$title, $wid, $cm->id); /mod/wiki/prettyview.php:62: add_to_log($course->id, ""wiki"", ""view"", ""prettyview.php?pageid="".$pageid, $pageid, $cm->id); /mod/wiki/comments.php:62: add_to_log($course->id, 'wiki', 'comments', ""comments.php?pageid="".$pageid, $pageid, $cm->id); ",40 +"MDL-40059","06/06/2013 08:31:44","Replace add_to_log with an event trigger - mod_glossary","Replace the add_to_log calls for the following area, with a call to the get_legacy_logdata function in the event class. *mod/glossary (13 calls)* /mod/glossary/deleteentry.php:116: add_to_log($course->id, ""glossary"", ""delete entry"", ""view.php?id=$cm->id&mode=$prevmode&hook=$hook"", $entry->id,$cm->id); /mod/glossary/index.php:23: add_to_log($course->id, ""glossary"", ""view all"", ""index.php?id=$course->id"", """"); /mod/glossary/import.php:168: add_to_log($course->id, ""course"", ""add mod"", /mod/glossary/import.php:171: add_to_log($course->id, $mod->modulename, ""add"", /mod/glossary/showentry.php:64: add_to_log($entry->courseid, 'glossary', 'view entry', ""showentry.php?eid=$entry->id"", $entry->id, $entry->cmid); /mod/glossary/showentry_ajax.php:80: add_to_log($entry->courseid, 'glossary', 'view entry', ""showentry.php?eid=$entry->id"", $entry->id, $entry->cmid); /mod/glossary/edit.php:129: add_to_log($course->id, ""glossary"", ""add entry"", /mod/glossary/edit.php:135: add_to_log($course->id, ""glossary"", ""update entry"", /mod/glossary/editcategories.php:106: add_to_log($course->id, ""glossary"", ""edit category"", ""editcategories.php?id=$cm->id"", $hook,$cm->id); /mod/glossary/editcategories.php:127: add_to_log($course->id, ""glossary"", ""delete category"", ""editcategories.php?id=$cm->id"", $hook,$cm->id); /mod/glossary/editcategories.php:191: add_to_log($course->id, ""glossary"", ""add category"", ""editcategories.php?id=$cm->id"", $cat->id,$cm->id); /mod/glossary/approve.php:37: add_to_log($course->id, ""glossary"", ""approve entry"", ""showentry.php?id=$cm->id&eid=$eid"", ""$eid"", $cm->id); /mod/glossary/view.php:127: add_to_log($course->id, ""glossary"", ""view"", ""view.php?id=$cm->id&tab=$tab"", $glossary->id, $cm->id); ",40 +"MDL-40060","06/06/2013 08:32:08","Replace add_to_log with an event trigger - mod_book","Replace the add_to_log calls for the following area, with a call to the get_legacy_logdata function in the event class. *mod/book (17 calls)* /mod/book/show.php:67: add_to_log($course->id, 'course', 'update mod', '../mod/book/view.php?id='.$cm->id, 'book '.$book->id); /mod/book/show.php:68: add_to_log($course->id, 'book', 'update', 'view.php?id='.$cm->id, $book->id, $cm->id); /mod/book/tool/exportimscp/index.php:46: add_to_log($course->id, 'book', 'exportimscp', 'tool/exportimscp/index.php?id='.$cm->id, $book->id, $cm->id); /mod/book/tool/importhtml/locallib.php:87: add_to_log($book->course, 'book', 'add chapter', 'view.php?id='.$context->instanceid.'&chapterid='.$chapter->id, $chapter->id, $context->instanceid); /mod/book/tool/importhtml/locallib.php:151: add_to_log($book->course, 'course', 'update mod', '../mod/book/view.php?id='.$context->instanceid, 'book '.$book->id); /mod/book/tool/print/index.php:80: add_to_log($course->id, 'book', 'print chapter', 'tool/print/index.php?id='.$cm->id.'&chapterid='.$chapter->id, $chapter->id, $cm->id); /mod/book/tool/print/index.php:123: add_to_log($course->id, 'book', 'print', 'tool/print/index.php?id='.$cm->id, $book->id, $cm->id); /mod/book/index.php:51: add_to_log($course->id, 'book', 'view all', 'index.php?id='.$course->id, ''); /mod/book/delete.php:71: add_to_log($course->id, 'course', 'update mod', '../mod/book/view.php?id='.$cm->id, 'book '.$book->id); /mod/book/delete.php:72: add_to_log($course->id, 'book', 'update', 'view.php?id='.$cm->id, $book->id, $cm->id); /mod/book/edit.php:78: add_to_log($course->id, 'course', 'update mod', '../mod/book/view.php?id='.$cm->id, 'book '.$book->id); /mod/book/edit.php:79: add_to_log($course->id, 'book', 'update chapter', 'view.php?id='.$cm->id.'&chapterid='.$data->id, $data->id, $cm->id); /mod/book/edit.php:104: add_to_log($course->id, 'course', 'update mod', '../mod/book/view.php?id='.$cm->id, 'book '.$book->id); /mod/book/edit.php:105: add_to_log($course->id, 'book', 'add chapter', 'view.php?id='.$cm->id.'&chapterid='.$data->id, $data->id, $cm->id); /mod/book/move.php:180: add_to_log($course->id, 'course', 'update mod', '../mod/book/view.php?id='.$cm->id, 'book '.$book->id); /mod/book/move.php:181: add_to_log($course->id, 'book', 'update', 'view.php?id='.$cm->id, $book->id, $cm->id); /mod/book/view.php:78: add_to_log($course->id, 'book', 'view', 'view.php?id='.$cm->id, $book->id, $cm->id); /mod/book/view.php:113: add_to_log($course->id, 'book', 'view chapter', 'view.php?id='.$cm->id.'&chapterid='.$chapter->id, $chapter->id, $cm->id); ",40 +"MDL-40061","06/06/2013 08:32:30","Replace add_to_log with an event trigger - mod_data","Replace the add_to_log calls for the following area, with a call to the get_legacy_logdata function in the event class. *mod/data (9 calls)* /mod/data/templates.php:76: add_to_log($course->id, 'data', 'templates view', ""templates.php?id=$cm->id&d=$data->id"", $data->id, $cm->id); /mod/data/templates.php:141: add_to_log($course->id, 'data', 'templates saved', ""templates.php?id=$cm->id&d=$data->id"", $data->id, $cm->id); /mod/data/index.php:42: add_to_log($course->id, ""data"", ""view all"", ""index.php?id=$course->id"", """"); /mod/data/field.php:124: add_to_log($course->id, 'data', 'fields add', /mod/data/field.php:166: add_to_log($course->id, 'data', 'fields update', /mod/data/field.php:197: add_to_log($course->id, 'data', 'fields delete', /mod/data/edit.php:189: add_to_log($course->id, 'data', 'update', ""view.php?d=$data->id&rid=$rid"", $data->id, $cm->id); /mod/data/edit.php:239: add_to_log($course->id, 'data', 'add', ""view.php?d=$data->id&rid=$recordid"", $data->id, $cm->id); /mod/data/view.php:255: add_to_log($course->id, 'data', 'view', ""view.php?id=$cm->id"", $data->id, $cm->id); /mod/data/view.php:377: add_to_log($course->id, 'data', 'record delete', ""view.php?id=$cm->id"", $data->id, $cm->id); Please also check /mod/data/lib.php data_delete_record() add_to_log call (if MDL-40871 is integrated) add_to_log($courseid, 'data', 'record delete', ""view.php?id=$cmid"", $data->id, $cmid);",40 +"MDL-40062","06/06/2013 08:32:54","Replace add_to_log with an event trigger - mod_forum","Replace the add_to_log calls for the following area, with a call to the get_legacy_logdata function in the event class. *mod/forum (24 calls)* /mod/forum/discuss.php:95: add_to_log($course->id, 'forum', 'move discussion', ""discuss.php?d=$discussion->id"", $discussion->id, $cmto->id); /mod/forum/discuss.php:107: add_to_log($course->id, 'forum', 'view discussion', ""discuss.php?d=$discussion->id"", $discussion->id, $cm->id); /mod/forum/subscribe.php:152: add_to_log($course->id, ""forum"", ""unsubscribe"", ""view.php?f=$forum->id"", $forum->id, $cm->id); /mod/forum/subscribe.php:177: add_to_log($course->id, ""forum"", ""subscribe"", ""view.php?f=$forum->id"", $forum->id, $cm->id); /mod/forum/markposts.php:85: add_to_log($course->id, ""discussion"", ""mark read"", ""view.php?f=$forum->id"", $d, $cm->id); /mod/forum/markposts.php:96: add_to_log($course->id, ""forum"", ""mark read"", ""view.php?f=$forum->id"", $forum->id, $cm->id); /mod/forum/markposts.php:103: // add_to_log($course->id, ""forum"", ""mark unread"", ""view.php?f=$forum->id"", $forum->id, $cm->id); /mod/forum/index.php:54: add_to_log($course->id, 'forum', 'view forums', ""index.php?id=$course->id""); /mod/forum/index.php:183: add_to_log($course->id, 'forum', 'subscribeall', ""index.php?id=$course->id"", $course->id); /mod/forum/index.php:186: add_to_log($course->id, 'forum', 'unsubscribeall', ""index.php?id=$course->id"", $course->id); /mod/forum/settracking.php:63: add_to_log($course->id, ""forum"", ""stop tracking"", ""view.php?f=$forum->id"", $forum->id, $cm->id); /mod/forum/settracking.php:71: add_to_log($course->id, ""forum"", ""start tracking"", ""view.php?f=$forum->id"", $forum->id, $cm->id); /mod/forum/lib.php:742: add_to_log($course->id, 'forum', 'mail error', ""discuss.php?d=$discussion->id#p$post->id"", /mod/forum/lib.php:1040: add_to_log($course->id, 'forum', 'mail digest error', '', '', $cm->id, $userto->id); /mod/forum/user.php:65: add_to_log(($isspecificcourse)?$courseid:SITEID, ""forum"", ""user report"", 'user.php?'.$url->get_query_string(), $userid); /mod/forum/post.php:336: add_to_log($discussion->course, ""forum"", ""delete discussion"", /mod/forum/post.php:353: add_to_log($discussion->course, ""forum"", ""delete post"", $discussionurl, ""$post->id"", $cm->id); /mod/forum/post.php:454: add_to_log($discussion->course, ""forum"", ""prune post"", /mod/forum/post.php:682: add_to_log($course->id, ""forum"", ""update post"", /mod/forum/post.php:725: add_to_log($course->id, ""forum"", ""add post"", /mod/forum/post.php:772: add_to_log($course->id, ""forum"", ""add discussion"", /mod/forum/subscribers.php:57: add_to_log($course->id, ""forum"", ""view subscribers"", ""subscribers.php?id=$forum->id"", $forum->id, $cm->id); /mod/forum/view.php:131: add_to_log($course->id, ""forum"", ""view forum"", ""view.php?id=$cm->id"", ""$forum->id"", $cm->id); /mod/forum/view.php:133: add_to_log($course->id, ""forum"", ""view forum"", ""view.php?f=$forum->id"", ""$forum->id""); /mod/forum/search.php:115: add_to_log($course->id, ""forum"", ""search"", ""search.php?id=$course->id&search="".urlencode($search), $search); ",40 +"MDL-40063","06/06/2013 08:33:20","Replace add_to_log with an event trigger - mod_quiz","Replace the add_to_log calls for the following area, with a call to the get_legacy_logdata function in the event class. *mod/quiz (14 calls)* /mod/quiz/processattempt.php:164: add_to_log($attemptobj->get_courseid(), 'quiz', 'close attempt', /mod/quiz/overridedelete.php:66: add_to_log($cm->course, 'quiz', 'delete override', /mod/quiz/attempt.php:98: add_to_log($attemptobj->get_courseid(), 'quiz', 'continue attempt', /mod/quiz/report.php:86: add_to_log($course->id, 'quiz', 'report', 'report.php?id=' . $cm->id . '&mode=' . $mode, /mod/quiz/index.php:39: add_to_log($course->id, ""quiz"", ""view all"", ""index.php?id=$course->id"", """"); /mod/quiz/report/attemptsreport.php:321: add_to_log($quiz->course, 'quiz', 'delete attempt', 'report.php?id=' . $cm->id, /mod/quiz/edit.php:158: add_to_log($cm->course, 'quiz', 'editquestions', /mod/quiz/comment.php:47: add_to_log($attemptobj->get_courseid(), 'quiz', 'manualgrade', 'comment.php?attempt=' . /mod/quiz/locallib.php:271: add_to_log($quizobj->get_courseid(), 'quiz', 'preview', 'view.php?id='.$quizobj->get_cmid(), /mod/quiz/locallib.php:274: add_to_log($quizobj->get_courseid(), 'quiz', 'attempt', 'review.php?attempt='.$attempt->id, /mod/quiz/overrideedit.php:175: add_to_log($cm->course, 'quiz', 'edit override', /mod/quiz/addrandom.php:93: add_to_log($quiz->course, 'quiz', 'addcategory', /mod/quiz/view.php:73: add_to_log($course->id, 'quiz', 'view', 'view.php?id=' . $cm->id, $quiz->id, $cm->id); /mod/quiz/review.php:89: add_to_log($attemptobj->get_courseid(), 'quiz', 'review', 'review.php?attempt=' . /mod/quiz/summary.php:81: add_to_log($attemptobj->get_courseid(), 'quiz', 'view summary', ",100 +"MDL-40079","06/06/2013 11:24:25","Hardcoded timeout parameter in the repository plugin","Hi, I found hardcoded timeout parameters in moodle/repository/lib.php This timeout results that I can't get a 25 MB video file from Dropbox to Moodle. This is a blocker for the Dropbox plugin and for all other repositories. The parameter should be configurable to higher values in config.php. If there is no setting in config.php then Moodle uses the default timeout. The best thing would be if the Moodle admin can set the timeout in the repository settings moodle/admin/settings.php?section=managerepositoriescommon Best regards, Ralf moodleSCHULE - Moodle Partner {noformat} /** Timeout in seconds for downloading the external file into moodle */ const GETFILE_TIMEOUT = 30; /** Timeout in seconds for syncronising the external file size */ const SYNCFILE_TIMEOUT = 1; /** Timeout in seconds for downloading an image file from external repository during syncronisation */ const SYNCIMAGE_TIMEOUT = 3; {noformat}",40 +"MDL-40107","06/10/2013 03:23:51","Upgrade TCPDF to tcpdf_6_0_031","Hopefully in the next release, it will be very helpful if lib/tcpdf preferably is upgraded to the latest version ( http://sourceforge.net/projects/tcpdf/files/ ) . The Current version of TCPDF included in Moodle lacks the Japanese (and other languages') font description, which leads to a problem such as corrupted Japanese characters written in Certificate sheet or something. At least, would you add one file lib/tcpdf/fonts/kozgopromedium.php that is included in the latest version of TCPDF? That will be a great help.",2 +"MDL-40126","06/11/2013 06:50:57","core_enrol_get_course_enrolment_methods() webservice","Create core_enrol_get_course_enrolment_methods() webservice to get list of enrolment plugins in core. Follow http://docs.moodle.org/dev/How_to_contribute_a_web_service_function_to_core",8 +"MDL-40205","06/17/2013 02:45:24","Long Block Titles Overflow in Clean","See screenshot. A long block title overflow the block and extends into the central content.",5 +"MDL-40220","06/18/2013 04:54:36","Remove deprecated calls to get_plugin_types(), get_plugin_list() etc","After MDL-39854 is integrated we need to: # Get rid of the deprecated calls in core. # Add much more docs about the deprecations, including in upgrade.txt ",5 +"MDL-40227","06/18/2013 17:00:45","Numerical question in lesson - decimal fractions problem","See this discussion: https://moodle.org/mod/forum/discuss.php?d=212252",3 +"MDL-40228","06/18/2013 17:55:11","Incorrect backup setting names in automated backups","Looks like launch_automated_backup::backup_cron_automated_helper has some incorrect setting names: * completion_information should be userscompletion * histories should be grade_histories This must be verified, but I copied this code for my own use and noticed that ""$bc->get_plan()->setting_exists($setting)"" failed for those two.",8 +"MDL-40230","06/19/2013 07:44:11","Integrate Outcomes stage 2 into core","Moodlerooms have developed the code for Outcomes stage 2. It has already gone through quite a lot of review from users and other stakeholders. Spec: http://docs.moodle.org/dev/Outcomes_Specification Code: https://github.com/moodlerooms/moodle/tree/INT-4475_outcomes. The rough peer review process will be as follows: 1) FRONTEND team will review the UI for basic usability and process. 2) Then, BACKEND team will review the code for structure and general coding. 3) Then, someone from integration will do a more detailed review for final integration. ",40 +"MDL-40248","06/20/2013 04:40:36","Activity Chooser should better support subtypes","In general we are trying to remove the need for activity module subtypes (which explains why they look so bad on activity chooser in 2.3+). However sometimes they are useful, especially for the case of LTI subtypes - ""External tools"". After some discussion, the plan is this: 1) If an activity module just has one subtype, then promote the link for that subtype to look like a full activity. This simplifies the interface for users. 2) If an activity module has two or more subtypes, then promote the module in the UI to a group equal to ""Activities"" or ""Resources"". For LTI this would be ""External tools"" and will show all the subtype icons/links under it.",3 +"MDL-40249","06/20/2013 04:48:07","Enable activity chooser on mobile screens.","Don't disable activity chooser on very small screens, use new fullscreen dialogue mode and hide the help (or make it popup/slide in help).",5 +"MDL-40250","06/20/2013 10:39:19","Add unit tests for core_files_external::upload","Add unit tests for core_files_external::upload()",5 +"MDL-40338","06/26/2013 20:17:12","META: Evaluate Remote-Learner ELIS ""hacks"" for core","Changes required to Moodle core code to allow for ELIS components to work. Links to specific Github repositories (ELIS Community) follow: ELIS Core: * [elis.base|https://github.com/remotelearner/elis.base] ELIS Program Management * [elis.cm|https://github.com/remotelearner/elis.cm] ELIS Reports * [moodle-block_php_report|https://github.com/remotelearner/moodle-block_php_report]",40 +"MDL-40363","06/27/2013 15:28:30","Files with spaces that are url encoded to %20 don't download under IIS","Documents that contain %20 in their file names can be uploaded as response files. They will not download however. I think its something to do with the link not working. The zip files can be downloaded by clicking 'download all' and that works. Our teachers (generally using xp ie8)open the students submitted Word docs, save the files with the encoding and upload the commented files (I know its bad practice but its what they do). Ideally there should be something to prevent files that are not able to open from being uploaded. Didn't happen in 1.9 as moodle put underscores in file submissions to replace spaces. However, we are now seeing this all the time. ",8 +"MDL-40369","06/28/2013 06:40:23","Remove deprecated icons","Remove deprecated icons",3 +"MDL-40436","07/02/2013 08:52:27","Error in Courses block when the user is enrolled in courses from other servers by MNet","If user is enrolled in courses from other host (host 2) by mnet, and block ""Courses"" is activated in actual host (host 1), error shown : 'Can not find data record in database table course'. *Steps to reproduce:* # Enrol user (user A) in course from other host (host 2) by mnet # Activate block ""Courses"" in Home of host 1 # Access with user A in host 1 Error shown : 'Can not find data record in database table course'. This is because in file: {code:title=blocks/course_list/block_course_list.php, in function get_remote_courses()} $coursecontext = context_course::instance($course->id); {code} That's defined in the file : {code:title=lib/accesslib.php} ... if (!$record = $DB->get_record('context', array('contextlevel'=>CONTEXT_COURSE, 'instanceid'=>$instanceid))) { if ($course = $DB->get_record('course', array('id'=>$instanceid), 'id,category', $strictness)) { ... {code} but $course->id not in table 'course' because it is an MNet course. I think solution is commented: {code:title=blocks/course_list/block_course_list.php, get_remote_courses()} $coursecontext = context_course::instance($course->id); {code} ",5 +"MDL-40493","07/04/2013 09:06:19","Allow an editor plugin to be chosen per profile","At the moment we have a setting in the user profile: When editing text - use html editor /use plain text field. I propose that we change that field to allow selection of an individual html editor plugin on a per user basis. That way on moodle.org I can use damyons cool html5 plugin, and Martin can continue to use tinymce.",5 +"MDL-40662","07/15/2013 03:37:37","setting up the default for My Home page produces block/course_overview:addinstance notice","*Reproduction steps:* # Log in as admin # Ensure debugging is enabled (Site admin > Development > Debugging) # Visit the default setting for 'My home page' (Site admin > Appearance > Default my home page) # Click ""Customise this page"" Notice the following error: {code} The block course_overview does not define the standard capability block/course_overview:addinstance line 606 of /blocks/moodleblock.class.php: call to debugging() line 584 of /blocks/moodleblock.class.php: call to block_base->has_add_block_capability() line 1090 of /lib/blocklib.php: call to block_base->user_can_addto() line 1047 of /lib/blocklib.php: call to block_manager->user_can_delete_block() line 256 of /blocks/moodleblock.class.php: call to block_manager->edit_controls() line 951 of /lib/blocklib.php: call to block_base->get_content_for_output() line 1003 of /lib/blocklib.php: call to block_manager->create_block_contents() line 353 of /lib/blocklib.php: call to block_manager->ensure_content_created() line 3068 of /lib/outputrenderers.php: call to block_manager->region_has_content() line 3104 of /lib/outputrenderers.php: call to core_renderer->body_css_classes() line 49 of /theme/clean/layout/columns3.php: call to core_renderer->body_attributes() line 847 of /lib/outputrenderers.php: call to include() line 777 of /lib/outputrenderers.php: call to core_renderer->render_page_layout() line 99 of /my/indexsys.php: call to core_renderer->header() {code}",8 +"MDL-40668","07/15/2013 09:23:16","Revert the ""collapsible editor"" to use the standard editor again (revert MDL-38614)","The change introduced in MDL-38614 replaced the standard HTML editor with the simplified editor (no toolbars) in a variety of places. Now that we have the editor showing a lesser set of buttons, thanks to MDL-37565, I propose we revert them all to the standard editor. ",8 +"MDL-40685","07/16/2013 09:34:50","META: Add/rescale headings for activities and resources page","Some activities and resources have headings while others do not. It should have to indicate clearly which activity/resource you are currently in. Please refer to the screenshot for reference. Activities that need headings particularly h2: # Book # Choice # Forum # Glossary # Survey # Wiki # ... All headings should be at the top most of the content page. Please note: this meta is only focusing on adding/fixing the heading level and layout for the page. Other issues such as block header, content's font size, layout, positioning, etc. will not be fixed through this meta. We (Barbara and I) have plan to address those issues right after we are done fixing the page heading. For now, we are only focusing on heading. Thanks. Documentation page for HTML Guidelines: http://docs.moodle.org/dev/HTML_Guidelines",100 +"MDL-40693","07/16/2013 16:50:20","Make Bootstrapbase breadcrumb seperator respect $THEME->rarrow","The breadcrumb seperator ""/"" is hardcoded in a renderer for the Bootstrapbase/Clean themes, here: https://github.com/moodle/moodle/blob/master/theme/bootstrapbase/renderers/core_renderer.php#L61 It should probably get the character from $THEME->rarrow so that child themes have an easy way to change this character. (A better way to fix this is to do it all in CSS, like Bootstrap v3 or the Pure YUI framework, but the actual character is used in Bootstrap 2.3 for IE7 compatability and it's what Moodle themers are used to).",3 +"MDL-40697","07/16/2013 21:08:51","Add events for when a grade has been created/updated","It would be nice to be able to register for course final grade updates.",40 +"MDL-40705","07/17/2013 07:19:41","Clean theme / navigation menu / current course: a long shortname will be displayed over the main content","Enable clean theme Go into a course Edit the course so the shortname is super long: => the shortname (from the navigation menu) is displayed over the main content. No problem in standard theme.",3 +"MDL-40722","07/17/2013 21:23:21","Clean theme: Resizing 3 column page with all blocks on the left is not displayed correctly","Following settings: Course main page (usually 3 columns) I move all blocks to the left. I make the screen resolution smaller than 768px Result: The blocks on the left side are far too narrow, they should be larger. Responsiveness fails.",13 +"MDL-40750","07/18/2013 13:24:14","Front Page Dropdown Arrow not Functioning (backport MDL-38661)","After upgrading, it seems we have two choices for the front page if we want a combo list of courses: 1. Set maxcategorydepth to unlimited and the front page will show every category uncollapsed and therefore every course. 2. Set the maxcategorydepth to some number, and the (un)collapse arrows on the frontpage will not work for any category beyond the maxcategorydepth, making it impossible to go to any courses below the maxcategorydepth without loading new pages. Now from the maxcategorydepth option text: ""Deeper level categories will appear as links and user can expand them with AJAX request."" This is *not* what happens. If you click on the arrow, nothing happens. If you click on the category name, it takes you to a new page. Now I am not a moodle user, but a moodle administrator. But from what people are telling me, this is not how moodle 2.4 functioned, so I'm guessing it's a regression. I'm running 2.5.1+ (Build: 20130712) (2013051401.02) and this affects both the standard theme and the new clean theme.",20 +"MDL-40752","07/18/2013 13:33:48","Login panel should be placed on the right side, in RTL mode (theme/clean, bootstrap)","""login"" and ""register"" panels should be flipped, in RTL mode",5 +"MDL-40768","07/19/2013 04:08:36","Extract icons from TinyMCE 4.0","Remove the icons from TinyMCE and create an AI file for the main issue",8 +"MDL-40769","07/19/2013 04:10:39","Create Icons from TinyMCE vector","Create SVG and PNG icons from the AI file",20 +"MDL-40770","07/19/2013 04:11:21","Implement Icons for TinyMCE 3.*","Create the code that will be used render the icons for TinyMCE",20 +"MDL-40786","07/19/2013 14:53:59","User's description fields should be aligned to the right and spaced out, when in RTL mode (theme/clean, bootstrapbase)","User's description fields should be aligned to the right and spaced out, when in RTL mode (theme/clean, bootstrapbase) Labels should be on the right side and user's data should be on the left side. Overall, they should be right aligned. (On all screen sizes)",8 +"MDL-40805","07/21/2013 05:00:37","user_logout event is not triggered when using CAS authentication with CAS logout option set to yes","The user_logout event does not get triggered when CAS authentication plugin is enabled AND the ""CAS logout option"" is set to ""yes""",40 +"MDL-40821","07/22/2013 17:51:12","Language menu in Clean should show language used","When using the Clean theme, the language menu shows the word 'Language'. It should show the language used (detected from browser settings or selected).",2 +"MDL-40833","07/23/2013 11:39:19","One topic at a time should use a heading tag for the topic heading","The new one topic at a time setting displays the single topic with a variety of subtle HTML differences from when they're displayed all at the same time. The relevant difference for this bug is that the topic heading is an h3.sectionname if displayed all on one page but a div.mdl-align.title when shown one at a time. (On the overview page it's an h3.section-title) The div should at least be a heading tag, I would have in general thought it might be the same HTML throughout the different course display types/modes.",3 +"MDL-40849","07/24/2013 05:34:59","Assignment marking guide screen is laid out poorly in Clean","See screenshot. This is the new assignment module. Theme == Clean.",20 +"MDL-40874","07/25/2013 04:42:05","Retire MyMobile as a standard theme","I'm not sure what the usage of the MyMobile theme is. It filled a need when we did not have any themes suitable for mobiles. However, the MyMobile theme is buggy and inconsistent with other Moodle standard themes. Some work has been done recently by Gareth J Barnard and Mary Evans. Now that we have responsive themes based on Bootstrap, I think we should consider retiring MyMobile.",20 +"MDL-40908","07/29/2013 09:45:31","Replace add_to_log with an event trigger - tag","Replace the add_to_log calls for the following area, with a call to the get_legacy_logdata function in the event class. *tag* /tag/coursetagslib.php:304: add_to_log($courseid, 'coursetags', 'add', $url, 'Course tagged'); /tag/edit.php:138: add_to_log($COURSE->id, 'tag', 'update', 'index.php?id='. $tag->id, $tag->name . '->'. $tagnew->name); /tag/edit.php:141: add_to_log($COURSE->id, 'tag', 'update', 'index.php?id='. $tag->id, $tag->name); /tag/user.php:50: add_to_log(SITEID, 'tag', 'flag', 'index.php?id='. $tagid, $tagid, '', $USER->id); Suggested additional events tag deleted",40 +"MDL-40909","07/29/2013 09:46:17","Replace add_to_log with an event trigger - enrol","Replace the add_to_log calls for the following area, with a call to the get_legacy_logdata function in the event class. *enrol* /enrol/paypal/unenrolself.php:52: add_to_log($course->id, 'course', 'unenrol', '../enrol/users.php?id='.$course->id, $course->id); //there should be userid somewhere! /enrol/self/unenrolself.php:52: add_to_log($course->id, 'course', 'unenrol', '../enrol/users.php?id='.$course->id, $course->id); //TODO: there should be userid somewhere! /enrol/manual/unenrolself.php:52: add_to_log($course->id, 'course', 'unenrol', '../enrol/users.php?id='.$course->id, $course->id); //TODO: there should be userid somewhere! /enrol/manual/manage.php:142: add_to_log($course->id, 'course', 'unenrol', '../enrol/users.php?id='.$course->id, $course->id); //there should be userid somewhere! /enrol/manual/manage.php:126: add_to_log($course->id, 'course', 'enrol', '../enrol/users.php?id='.$course->id, $course->id); //there should be userid somewhere! /enrol/self/lib.php:198: add_to_log($instance->courseid, 'course', 'enrol', '../enrol/users.php?id='.$instance->courseid, $instance->courseid); /enrol/imsenterprise/lib.php:440: add_to_log(SITEID, ""course"", ""new"", ""view.php?id=$course->id"", ""$course->fullname (ID $course->id)"");",20 +"MDL-40910","07/29/2013 09:46:57","Replace add_to_log with an event trigger - grade","Replace the add_to_log calls for the following area, with a call to the get_legacy_logdata function in the event class. *grade* ./grade/report/grader/ajax_callbacks.php:127: add_to_log($course->id, 'grade', 'update', $url, $info); ./grade/report/grader/lib.php:309: add_to_log($this->course->id, 'grade', 'update', $url, $info); ./grade/edit/tree/grade.php:212: add_to_log($course->id, 'grade', 'update', $url, $info); ./grade/edit/tree/grade.php:239: add_to_log($course->id, 'grade', 'update', $url, $info);",13 +"MDL-40911","07/29/2013 09:47:52","Replace add_to_log with an event trigger - login","Replace the add_to_log calls for the following area, with a call to the get_legacy_logdata function in the event class. *Login* /lib/moodlelib.php:4288: add_to_log(SITEID, 'login', 'error', 'index.php', $username); /lib/moodlelib.php:4294: add_to_log(SITEID, 'login', 'error', 'index.php', $username); /lib/moodlelib.php:4311: add_to_log(SITEID, 'login', 'error', 'index.php', $username); /lib/moodlelib.php:4331: add_to_log(SITEID, 'login', 'error', 'index.php', $username); /lib/moodlelib.php:4383: add_to_log(SITEID, 'login', 'error', 'index.php', $username); /lib/moodlelib.php:4395: add_to_log(SITEID, 'login', 'error', 'index.php', $username);",8 +"MDL-40912","07/29/2013 09:48:38","Replace add_to_log with an event trigger - course category","Replace the add_to_log calls for the following area, with a call to the get_legacy_logdata function in the event class. *category* /lib/coursecatlib.php:381: add_to_log(SITEID, ""category"", 'add', ""editcategory.php?id=$newcategory->id"", $newcategory->id); /lib/coursecatlib.php:475: add_to_log(SITEID, ""category"", 'update', ""editcategory.php?id=$this->id"", $this->id); /lib/coursecatlib.php:1514: add_to_log(SITEID, ""category"", ""move"", ""editcategory.php?id=$childcat->id"", $childcat->id); /lib/coursecatlib.php:1672: add_to_log(SITEID, ""category"", ""move"", ""editcategory.php?id=$this->id"", $this->id); /lib/coursecatlib.php:1737: add_to_log(SITEID, ""category"", ""hide"", ""editcategory.php?id=$this->id"", $this->id); /lib/coursecatlib.php:1790: add_to_log(SITEID, ""category"", ""show"", ""editcategory.php?id=$this->id"", $this->id); /course/manage.php:187: add_to_log(SITEID, ""category"", ""move"", ""editcategory.php?id=$movecategory->id"", $movecategory->id);",20 +"MDL-40913","07/29/2013 09:49:15","Replace add_to_log with an event trigger - message","Replace the add_to_log calls for the following area, with a call to the get_legacy_logdata function in the event class. *message* /message/index.php:134: add_to_log(SITEID, 'message', 'add contact', 'index.php?user1='.$addcontact.'&user2='.$USER->id, $addcontact); /message/index.php:139: add_to_log(SITEID, 'message', 'remove contact', 'index.php?user1='.$removecontact.'&user2='.$USER->id, $removecontact); /message/index.php:143: add_to_log(SITEID, 'message', 'block contact', 'index.php?user1='.$blockcontact.'&user2='.$USER->id, $blockcontact); /message/index.php:147: add_to_log(SITEID, 'message', 'unblock contact', 'index.php?user1='.$unblockcontact.'&user2='.$USER->id, $unblockcontact); /message/index.php:184: add_to_log(SITEID, 'message', 'write', 'index.php?user='.$user1->id.'&id='.$user2->id.'&history=1#m'.$messageid, $user1->id); /message/lib.php:132: add_to_log(SITEID, 'message', 'view', 'index.php', $viewing);",20 +"MDL-40914","07/29/2013 09:49:50","Replace add_to_log with an event trigger - authentication","Replace the add_to_log calls for the following area, with a call to the get_legacy_logdata function in the event class. *authentication* /auth/ldap/auth.php:1739: add_to_log(SITEID, 'user', 'login', ""view.php?id=$USER->id&course="".SITEID, /auth/shibboleth/index.php:65: add_to_log(SITEID, 'user', 'login', ""view.php?id=$USER->id&course="".SITEID, $USER->id, 0, $USER->id);",8 +"MDL-40915","07/29/2013 09:50:26","Replace add_to_log with an event trigger - calendar","Replace the add_to_log calls for the following area, with a call to the get_legacy_logdata function in the event class. *Calendar* /calendar/lib.php:2236: add_to_log($this->properties->courseid, 'calendar', 'add', 'event.php?action=edit&id='.$this->properties->id, $this->properties->name); /calendar/lib.php:2265: add_to_log($eventcopy->courseid, 'calendar', 'add', 'event.php?action=edit&id='.$eventcopyid, $eventcopy->name); /calendar/lib.php:2320: add_to_log($this->properties->courseid, 'calendar', 'edit all', 'event.php?action=edit&id='.$this->properties->id, $this->properties->name); /calendar/lib.php:2325: add_to_log($this->properties->courseid, 'calendar', 'edit', 'event.php?action=edit&id='.$this->properties->id, $this->properties->name); Suggested additional events: Check to see if deleting a calendar event requires an event.",20 +"MDL-40916","07/29/2013 09:51:18","Replace add_to_log with an event trigger - mod_imscp","Replace the add_to_log calls for the following area, with a call to the get_legacy_logdata function in the event class. *mod_imscp* /mod/imscp/index.php:36:add_to_log($course->id, 'imscp', 'view all', ""index.php?id=$course->id"", ''); /mod/imscp/view.php:49:add_to_log($course->id, 'imscp', 'view', 'view.php?id='.$cm->id, $imscp->id, $cm->id);",8 +"MDL-40917","07/29/2013 09:51:51","Replace add_to_log with an event trigger - mod_resource","Replace the add_to_log calls for the following area, with a call to the get_legacy_logdata function in the event class. *mod_resource* /mod/resource/index.php:36:add_to_log($course->id, 'resource', 'view all', ""index.php?id=$course->id"", ''); /mod/resource/view.php:56:add_to_log($course->id, 'resource', 'view', 'view.php?id='.$cm->id, $resource->id, $cm->id);",8 +"MDL-40918","07/29/2013 09:53:24","Replace add_to_log with an event trigger - mod_lti","Replace the add_to_log calls for the following area, with a call to the get_legacy_logdata function in the event class. *mod_lti* /mod/lti/index.php:59:add_to_log($course->id, ""lti"", ""view all"", ""index.php?id=$course->id"", """"); /mod/lti/launch.php:62:add_to_log($course->id, ""lti"", ""launch"", ""launch.php?id=$cm->id"", ""$lti->id""); /mod/lti/view.php:95:add_to_log($course->id, ""lti"", ""view"", ""view.php?id=$cm->id"", ""$lti->id"");",8 +"MDL-40919","07/29/2013 09:54:05","Replace add_to_log with an event trigger - mod_survey","Replace the add_to_log calls for the following area, with a call to the get_legacy_logdata function in the event class. *mod_survey* /mod/survey/report.php:95: add_to_log($course->id, ""survey"", ""view report"", ""report.php?id=$cm->id"", ""$survey->id"", $cm->id); /mod/survey/index.php:17: add_to_log($course->id, ""survey"", ""view all"", ""index.php?id=$course->id"", """"); /mod/survey/save.php:57: add_to_log($course->id, ""survey"", ""submit"", ""view.php?id=$cm->id"", ""$survey->id"", ""$cm->id""); /mod/survey/view.php:99: add_to_log($course->id, ""survey"", ""view graph"", ""view.php?id=$cm->id"", $survey->id, $cm->id); /mod/survey/view.php:136: add_to_log($course->id, ""survey"", ""view form"", ""view.php?id=$cm->id"", $survey->id, $cm->id); /mod/survey/download.php:54:add_to_log($course->id, ""survey"", ""download"", $PAGE->url->out(), ""$survey->id"", $cm->id);",20 +"MDL-40920","07/29/2013 09:55:20","Replace add_to_log with an event trigger - mod_url","Replace the add_to_log calls for the following area, with a call to the get_legacy_logdata function in the event class. *mod_url* /mod/url/index.php:36: add_to_log($course->id, 'url', 'view all', ""index.php?id=$course->id"", ''); /mod/url/view.php:50: add_to_log($course->id, 'url', 'view', 'view.php?id='.$cm->id, $url->id, $cm->id);",8 +"MDL-40921","07/29/2013 09:55:58","Replace add_to_log with an event trigger - mod_workshop","Replace the add_to_log calls for the following area, with a call to the get_legacy_logdata function in the event class. *mod_workshop* /mod/workshop/index.php:36: add_to_log($course->id, 'workshop', 'view all', ""index.php?id=$course->id"", ''); /mod/workshop/locallib.php:1525: add_to_log($this->course->id, 'workshop', $action, $logurl, $info, $this->cm->id); *check out this function:* /mod/workshop/locallib.php:1514 log() *Check out these class to the log function* /mod/workshop/aggregate.php:56 $workshop->log('update aggregate grades'); /mod/workshop/assessment.php:162 $workshop->log('add assessment', $workshop->assess_url($assessment->id), $assessment->submissionid); /mod/workshop/assessment.php:164 $workshop->log('update assessment', $workshop->assess_url($assessment->id), $assessment->submissionid); mod/workshop/exassessment.php:92 $workshop->log('add reference assessment', $workshop->exassess_url($assessment->id), $assessment->submissionid); mod/workshop/exassessment.php:94 $workshop->log('update reference assessment', $workshop->exassess_url($assessment->id), $assessment->submissionid); mod/workshop/exassessment.php:98 $workshop->log('add example assessment', $workshop->exassess_url($assessment->id), $assessment->submissionid); mod/workshop/exassessment.php:100 $workshop->log('update example assessment', $workshop->exassess_url($assessment->id), $assessment->submissionid); mod/workshop/exsubmission.php:60 $workshop->log('view example', $workshop->exsubmission_url($example->id), $example->id); mod/workshop/exsubmission.php:165 $workshop->log('add example', $workshop->exsubmission_url($example->id), $example->id); mod/workshop/exsubmission.php:167 $workshop->log('update example', $workshop->exsubmission_url($example->id), $example->id); mod/workshop/lib.php:950 $workshop->log('update switch phase', $workshop->view_url(), $workshop->phase); mod/workshop/submission.php:54 $workshop->log('view submission', $workshop->submission_url($submission->id), $submission->id); mod/workshop/submission.php:192 $workshop->log('add submission', $workshop->submission_url($submission->id), $submission->id); mod/workshop/submission.php:194 $workshop->log('update submission', $workshop->submission_url($submission->id), $submission->id); mod/workshop/toolbox.php:44 $workshop->log('update clear aggregated grades'); mod/workshop/toolbox.php:51 $workshop->log('update clear assessments'); mod/workshop/view.php:57 $workshop->log('view'); mod/workshop/view.php:74 $workshop->log('update switch phase', $workshop->view_url(), $workshop->phase); *Also check out the following* mod/workshop/allocation/scheduled/lib.php:237: $result->log($data->settings, 'debug'); mod/workshop/allocation/random/lib.php:111: $result->log(get_string('numofrandomlyallocatedsubmissions', 'workshopallocation_random', count($randomallocations))); mod/workshop/allocation/random/lib.php:117: $result->log(get_string('numofselfallocatedsubmissions', 'workshopallocation_random', count($selfallocations))); mod/workshop/allocation/random/lib.php:121: $result->log(get_string('noallocationtoadd', 'workshopallocation_random'), 'info'); mod/workshop/allocation/random/lib.php:155: $result->log(get_string('allocationaddeddetail', 'workshopallocation_random', $a), 'ok', 1); mod/workshop/allocation/random/lib.php:157: $result->log(get_string('allocationreuseddetail', 'workshopallocation_random', $a), 'ok', 1); mod/workshop/allocation/random/lib.php:165: $result->log(get_string('numofdeallocatedassessment', 'workshopallocation_random', count($delassessments)), 'info'); mod/workshop/allocation/random/lib.php:175: $result->log(get_string('allocationdeallocategraded', 'workshopallocation_random', $a), 'error', 1); mod/workshop/allocation/random/lib.php:178: $result->log(get_string('assessmentdeleteddetail', 'workshopallocation_random', $a), 'info', 1); mod/workshop/allocation/random/lib.php:452: $result->log(get_string('resultnumperauthor', 'workshopallocation_random', $numofreviews), 'info'); mod/workshop/allocation/random/lib.php:459: $result->log(get_string('resultnumperreviewer', 'workshopallocation_random', $numofreviews), 'info'); mod/workshop/allocation/random/lib.php:512: $result->log('processing circle group id ' . $circlegroupid, 'debug'); mod/workshop/allocation/random/lib.php:520: $result->log('iteration ' . $requiredreviews, 'debug'); mod/workshop/allocation/random/lib.php:523: $result->log('skipping circle id ' . $circleid, 'debug'); mod/workshop/allocation/random/lib.php:526: $result->log('processing circle id ' . $circleid, 'debug'); mod/workshop/allocation/random/lib.php:539: $result->log(get_string('resultnomorepeers', 'workshopallocation_random'), 'error', 1); mod/workshop/allocation/random/lib.php:546: $result->log(get_string('resultnomorepeersingroup', 'workshopallocation_random'), 'error', 1); mod/workshop/allocation/random/lib.php:567: $result->log(get_string('resultnotenoughpeers', 'workshopallocation_random'), 'error', 1); mod/workshop/allocation/random/lib.php:570: $result->log('next square should be from group id ' . $targetgroup, 'debug', 1); mod/workshop/allocation/random/lib.php:578: $result->log('unable to find an available square. trying another group', 'debug', 1); mod/workshop/allocation/random/lib.php:582: $result->log('target square = ' . $targetsquare, 'debug', 1); mod/workshop/allocation/random/lib.php:587: $result->log('increasing square workload to ' . $squareworkload[$targetsquare], 'debug', 1); mod/workshop/allocation/random/lib.php:595: $result->log('increasing group workload to ' . $squaregroupsworkload[$targetgroup], 'debug', 1);",40 +"MDL-40922","07/29/2013 09:56:59","Replace add_to_log with an event trigger - mod_folder","Replace the add_to_log calls for the following area, with a call to the get_legacy_logdata function in the event class. *mod_folder* /mod/folder/index.php:36: add_to_log($course->id, 'folder', 'view all', ""index.php?id=$course->id"", ''); /mod/folder/edit.php:66: add_to_log($course->id, 'folder', 'edit', 'edit.php?id='.$cm->id, $folder->id, $cm->id); /mod/folder/view.php:53: add_to_log($course->id, 'folder', 'view', 'view.php?id='.$cm->id, $folder->id, $cm->id);",8 +"MDL-40932","07/30/2013 06:36:52","Tabbing through links on course page (and others) does not work on Mac Firefox and Mac Safari (and maybe more)","Chrome seems to work better, but for some browsers (Mac Firefox and Mac Safari at least) the main content of the page is completely skipped.",3 +"MDL-40962","07/31/2013 05:56:05","Alternate name warnings in Recent Activity block","When an assignment has been submitted, the recent activity displays this: {noformat} You need to update your sql to include additional name fields in the user object. line 3657 of /lib/moodlelib.php: call to debugging() line 2222 of /lib/weblib.php: call to fullname() line 587 of /mod/assign/lib.php: call to print_recent_activity_note() line ? of unknownfile: call to assign_print_recent_activity() line 8362 of /lib/moodlelib.php: call to call_user_func_array() line 202 of /blocks/recent_activity/block_recent_activity.php: call to component_callback() line 74 of /blocks/recent_activity/block_recent_activity.php: call to block_recent_activity->get_modules_recent_activity() line 296 of /blocks/moodleblock.class.php: call to block_recent_activity->get_content() line 238 of /blocks/moodleblock.class.php: call to block_base->formatted_contents() line 956 of /lib/blocklib.php: call to block_base->get_content_for_output() line 1008 of /lib/blocklib.php: call to block_manager->create_block_contents() line 353 of /lib/blocklib.php: call to block_manager->ensure_content_created() line 7 of /theme/base/layout/general.php: call to block_manager->region_has_content() line 847 of /lib/outputrenderers.php: call to include() line 777 of /lib/outputrenderers.php: call to core_renderer->render_page_layout() line 242 of /course/view.php: call to core_renderer->header() You need to update your sql to include additional name fields in the user object. line 3657 of /lib/moodlelib.php: call to debugging() line 2222 of /lib/weblib.php: call to fullname() line 587 of /mod/assign/lib.php: call to print_recent_activity_note() line ? of unknownfile: call to assign_print_recent_activity() line 8362 of /lib/moodlelib.php: call to call_user_func_array() line 202 of /blocks/recent_activity/block_recent_activity.php: call to component_callback() line 74 of /blocks/recent_activity/block_recent_activity.php: call to block_recent_activity->get_modules_recent_activity() line 296 of /blocks/moodleblock.class.php: call to block_recent_activity->get_content() line 238 of /blocks/moodleblock.class.php: call to block_base->formatted_contents() line 956 of /lib/blocklib.php: call to block_base->get_content_for_output() line 1008 of /lib/blocklib.php: call to block_manager->create_block_contents() line 353 of /lib/blocklib.php: call to block_manager->ensure_content_created() line 7 of /theme/base/layout/general.php: call to block_manager->region_has_content() line 847 of /lib/outputrenderers.php: call to include() line 777 of /lib/outputrenderers.php: call to core_renderer->render_page_layout() line 242 of /course/view.php: call to core_renderer->header() You need to update your sql to include additional name fields in the user object. line 3657 of /lib/moodlelib.php: call to debugging() line 2222 of /lib/weblib.php: call to fullname() line 587 of /mod/assign/lib.php: call to print_recent_activity_note() line ? of unknownfile: call to assign_print_recent_activity() line 8362 of /lib/moodlelib.php: call to call_user_func_array() line 202 of /blocks/recent_activity/block_recent_activity.php: call to component_callback() line 74 of /blocks/recent_activity/block_recent_activity.php: call to block_recent_activity->get_modules_recent_activity() line 296 of /blocks/moodleblock.class.php: call to block_recent_activity->get_content() line 238 of /blocks/moodleblock.class.php: call to block_base->formatted_contents() line 956 of /lib/blocklib.php: call to block_base->get_content_for_output() line 1008 of /lib/blocklib.php: call to block_manager->create_block_contents() line 353 of /lib/blocklib.php: call to block_manager->ensure_content_created() line 7 of /theme/base/layout/general.php: call to block_manager->region_has_content() line 847 of /lib/outputrenderers.php: call to include() line 777 of /lib/outputrenderers.php: call to core_renderer->render_page_layout() line 242 of /course/view.php: call to core_renderer->header() You need to update your sql to include additional name fields in the user object. line 3657 of /lib/moodlelib.php: call to debugging() line 2222 of /lib/weblib.php: call to fullname() line 587 of /mod/assign/lib.php: call to print_recent_activity_note() line ? of unknownfile: call to assign_print_recent_activity() line 8362 of /lib/moodlelib.php: call to call_user_func_array() line 202 of /blocks/recent_activity/block_recent_activity.php: call to component_callback() line 74 of /blocks/recent_activity/block_recent_activity.php: call to block_recent_activity->get_modules_recent_activity() line 296 of /blocks/moodleblock.class.php: call to block_recent_activity->get_content() line 238 of /blocks/moodleblock.class.php: call to block_base->formatted_contents() line 956 of /lib/blocklib.php: call to block_base->get_content_for_output() line 1008 of /lib/blocklib.php: call to block_manager->create_block_contents() line 353 of /lib/blocklib.php: call to block_manager->ensure_content_created() line 7 of /theme/base/layout/general.php: call to block_manager->region_has_content() line 847 of /lib/outputrenderers.php: call to include() line 777 of /lib/outputrenderers.php: call to core_renderer->render_page_layout() line 242 of /course/view.php: call to core_renderer->header() {noformat} Not sure how to replicate this, but I followed the instructions of MDL-40897 and that came up while logged in as the student.",5 +"MDL-41031","08/05/2013 09:45:45","Create a base class for page viewed event","As discussed in HQ, we decided to have a base class for page view events. All plugins should extend this and implement their own specific classes.",13 +"MDL-41033","08/05/2013 12:06:17","Filepicker selecting file does not announce that the file modal opened","*Issue* Context changes - When the user selects a file in the filepicker the user is not informed that the file edit modal has opened. Standard Level* WCAG 2 3.3.2 (A) [http://www.w3.org/WAI/WCAG20/quickref/#qr-minimize-error-cues] *Impact* Serious *Example Link* [http://demo.moodle.net/mod/assign/view.php?id=1778&action=editsubmission] *Test Steps* # Login as a student # Navigate to a course # Click the assignment # Click add... # Select recent files/private files (make sure to have a file within the repositories) # Click on the file # Notice nothing is announced to the screen reader when the file edit modal appears",8 +"MDL-41039","08/06/2013 04:51:48","Replace Legacy events - Quiz","Replace all legacy events related to quiz. * quiz_attempt_started * quiz_attempt_submitted * quiz_attempt_abandoned * quiz_attempt_overdue Change handlers to observers mod/quiz/db/events.php * quiz_attempt_submitted * quiz_attempt_overdue",40 +"MDL-41062","08/07/2013 08:03:23","Can not sort gradebook items.","We are suffering an erratic behaviour while trying to sort items in the gradebook using moodle 2.4.4 or 2.4.5. Please check the attached video. If we try to put the ""Final Assessmet"" item at the first place it works, when we try to put it at the end of the list it does not work and that item appears in a random? position. The same happens when we try to put the last item in the right place and after trying several other combinations. ",20 +"MDL-41067","08/07/2013 09:51:05","MUC cache definitions are NOT documented!!","http://docs.moodle.org/25/en/admin/cache/admin is very thin. I am shocked that no-one has yet documented the various cache types with information about: - what is being cached - some indication of data size/structure to help the admin - if manual purging is required on cluster, then WHEN does this need to be done Can we make sure this is done ASAP please? http://docs.moodle.org/25/en/Caching#Cache_definition_configuration",13 +"MDL-41071","08/07/2013 13:52:40","Class plugininfo_mod does not cache in the right cache definition","After playing with some profiling tools, I noticed that plugininfo_mod was using plugininfo_base cache definition.",8 +"MDL-41075","08/07/2013 17:20:56","Selecting ""Choose..."" option from My Courses dropdown on Participants page generates error: Can not find data record in database table course","On the Participants page, selecting selecting 'Choose...' from the My Courses dropdown results in an error. Pre-condition: User used for testing is enrolled in at least course Steps to reproduce: 1. As a user with at least one course enrollment, access a course. 2. In Navigation block, click Participants. 3. From My Courses dropdown, select the 'Choose...' option. Expected results: The form should not submit. Actual results: The form submits, but 'Choose...' isn't a valid course and an error results. {quote} Can not find data record in database table course Debug info: SELECT * FROM course WHERE id = ? [array ( 0 => 0, )] Error code: invalidrecord Stack trace: • line 1357 of /lib/dml/moodle_database.php: dml_missing_record_exception thrown • line 1333 of /lib/dml/moodle_database.php: call to moodle_database->get_record_select() • line 43 of /user/index.php: call to moodle_database->get_record() {quote}",8 +"MDL-41082","08/08/2013 03:16:04","Portfolio instances are loaded when loading the user settings","There is an unnecessary process when populating the settings of the user in the Settings block. To check if there are visible instances, it loads all the portfolio files, and instantiate all the instances. This is an unnecessary processing and it is performed on every single page. I noticed this when the Evernote portfolio was installed, which caused the memory usage to be freed by about 20MB after the patch. The reason was that the libraries required in the Evernote portfolio lib.php were quite big.",8 +"MDL-41098","08/09/2013 04:23:22","Add Atto HTML editor to core (the editor formally known as contenteditable)","Add contenteditable text editor to core (non default). Link to plugins DB: https://moodle.org/plugins/view.php?plugin=editor_contenteditable Link to github: https://github.com/damyon/contenteditable Also needs: MDL-40493 to allow users to set their choice of editor in their preferences. Reasoning: 1. TinyMCE has bugs in iOS that we have been unable to solve in a reasonable amount of time. This editor is much simpler - so less to debug/maintain. We can leave tinymce as the default - but use this editor on iOS spcifically where tinyMCE fails. 2. It fits with Moodle better - it uses YUI for window management, and event handling - and uses moodle pix_icons etc - so the UI ""fits"" better with Moodle. Things to do: Change the name? - done - rename to ""HTML5 text editor"" Change the icons? - only for consistency. Can be done when icons are ready. If this is to be a core editor it needs to support enough of the features that TinyMCE supports so that it is not seen as worse. Some things tinyMCE does that contenteditable does not: * Image alignment * Maths plugins * Colors * Fonts * Paste from word (Is this really needed?) * More...",20 +"MDL-41100","08/09/2013 04:55:58","Caching get_plugin_list_with_file","This function is called on each request to populate the navigation, and from a few other places. See usage of: - get_plugin_list_with_file - get_plugin_list_with_function This could be cached in core_component as it is an unnecessary access to the file system.",8 +"MDL-41101","08/09/2013 08:49:11","Replace existing add_to_log calls for mod_assign","Replace the existing add_to_log calls for mod_assign.",40 +"MDL-41123","08/12/2013 04:03:03","Replace add_to_log call for page viewed in /report/completion/user.php","/report/completion/user.php:53: add_to_log($course->id, 'course', 'report completion', ""report/completion/user.php?id=$user->id&course=$course->id"", $course->id);",8 +"MDL-41131","08/12/2013 06:20:29","Allow assignment plugins to ""just be on""","ie - if the assignment plugin says - I AM ON - don't make the user tick the checkbox. Apply this to submission_comments if comments are enabled, and to feedback_pdf. ",8 +"MDL-41133","08/12/2013 06:23:32","Update icons in feedback_pdf plugin to match core style.","Update icons in feedback_pdf plugin to match core style. Note - there is an issue currently being worked on to update the ""editor"" icons in Moodle - which should include the icons that are needed for this plugin.",8 +"MDL-41137","08/12/2013 06:35:28","Verify no UI RTL issues with feedback_pdf plugin.","Verify no RTL issues with feedback_pdf plugin (may need to include RTL fonts). ",8 +"MDL-41138","08/12/2013 06:42:59","Add unit tests for editpdf after refactoring","Add unit tests and behat tests to feedback_pdf plugin",5 +"MDL-41152","08/12/2013 23:15:19","Clean / Bootstrap theme: Categories & Items page may be too wide to be usable","To reproduce: Go to a course with lots of grade items, and at least one category or item with a long name. Go to the gradebook Categories and Items page. Note that the action icons are off the right edge of the screen. Scroll to the bottom of the page, then scroll right to access the icons. Now the activity names on the left are not visible. This makes managing grade categories and items really clunky, if not impossible, for those courses with a lot of items. ",20 +"MDL-41159","08/13/2013 04:11:27","The folder management icon has a weird zindex and shows above modal dialogues","Discovered while testing MDL-39851. The folder management icon is shown above the modal dialogues. Steps to reproduce: # Go to my private files # Create a folder in private files # Press the 'Add button' to get the repository popup You will see the folder management icon floating above the modal popup",0.5 +"MDL-41170","08/13/2013 17:29:42","user_updated event not triggered when user password modified in moodlelib.php functions","user_updated event not triggered when user password modified in moodlelib.php functions: * update_internal_user_password() * setnew_password_and_mail() ",8 +"MDL-41176","08/14/2013 02:35:26","Debugging when changing a users email address and other bugs","You need to update your sql to include additional name fields in the user object. line 3637 of /lib/moodlelib.php: call to debugging() line 5708 of /lib/moodlelib.php: call to fullname() line 255 of /user/edit.php: call to email_to_user() You need to update your sql to include additional name fields in the user object. line 3637 of /lib/moodlelib.php: call to debugging() line 5708 of /lib/moodlelib.php: call to fullname() line 255 of /user/edit.php: call to email_to_user()",2 +"MDL-41185","08/14/2013 08:52:01","Create page viewed event for course","/course/user.php:108: add_to_log($course->id, ""course"", ""user report"", ""user.php?id=$course->id&user=$user->id&mode=$mode"", ""$user->id""); /course/view.php:117: add_to_log($course->id, 'course', $loglabel, ""view.php?"". $logparam, $infoid); /index.php:79: add_to_log(SITEID, 'course', 'view', 'view.php?id='.SITEID, SITEID);",13 +"MDL-41188","08/14/2013 09:22:41","Mobile: when closing file picker, the page should be re-centred on the file manager (if you were using the file manager)","Course > Edit settings > in the file manager ""Add"" > add a file > the user is sent back at the top of the page",13 +"MDL-41189","08/14/2013 09:26:16","File picker: when editing a file from file manager, on a mobile device, the height of the file picker Edit dialog is too small.","in file manager, click on the image. In the Edit metadata dialog, the bottom section containing the file info is not big enough. The dialog white background ends almost at the bottom of the image preview. The rest of the metadata are floating over the dark/transparent background page. i.e. the edit metadata dialog height is wrong. The issue doesn't exist when you add the file the first time.",13 +"MDL-41197","08/14/2013 17:15:14","core_text::convert produces notices when experiencing invalid utf8 params or char not in target encoding","It is missing the silence param. Here is a phpunit assertion to demonstrate the problem: https://github.com/danpoltawski/moodle/commit/e6483931cfc507f4997f815fdb420a52121630a2 Here is a quick fix https://github.com/danpoltawski/moodle/commit/d6378ddcc0e6e248f92b65f520c8f77a85298ffb",2 +"MDL-41200","08/14/2013 17:40:12","Change header for selecting file in filepicker","When user selects a file in filepicker, it announces/displays 'edit somefilename' on the headerinstead of 'select'.",8 +"MDL-41208","08/15/2013 00:19:02","Update YUI to version 3.12.0","YUI needs to be updated to version 3.12.0",2 +"MDL-41213","08/15/2013 05:50:10","File picker modal layout issues when using clean theme.","# Log in as any user. # Visit 'My Profile' -> 'My Private Files'. # Click to add a file. # Search for a picture in wikimedia. # Click to open it. # Notice the following issues - Dotted line appears (in master due to MDL-39851), colon appears on the line below 'Choose license', there is no spacing between the label and select box and the select box extends out of the window. See the screenshot attached for demonstration of this.",5 +"MDL-41214","08/15/2013 07:04:24","Docked blocks zindex puts them on top of fullscreen dialogs","Either need to search for docked block regions when calculating the zindex for popups, or enforce a minimum zindex for popups that is greater than the zindex for the docked blocks. I'm thinking option 2 - there seem to be hidden zindexes all over the place. ",8 +"MDL-41215","08/15/2013 07:09:08","filepicker infinite scroll scrolling issues","The change in MDL-39851 caused repositories using infinite scroll to be non-usable on small screens. The repository window keeps getting longer and longer and the scroll bar ceases to work correctly.",8 +"MDL-41220","08/15/2013 13:23:03","core_component_testcase assumes you don't have add-ons isntalled","Steps to reproduce: 1. Install http://moodle.org/plugins/view.php?plugin=report_customsql into a master install. 2. Run the unit tests. Expected result: They all pass. Acutal result: {noformat} 1) core_component_testcase::test_get_plugin_list_with_file Failed asserting that two arrays are equal. --- Expected +++ Actual @@ @@ Array ( 0 => 'completion' - 1 => 'log' - 2 => 'loglive' - 3 => 'outline' - 4 => 'participation' - 5 => 'progress' - 6 => 'stats' + 1 => 'customsql' + 2 => 'log' + 3 => 'loglive' + 4 => 'outline' + 5 => 'participation' + 6 => 'progress' + 7 => 'stats' ) C:\Users\tjh238\workspace\moodle_head\lib\tests\component_test.php:351 C:\Users\tjh238\workspace\moodle_head\lib\phpunit\classes\advanced_testcase.php:76 {noformat} ",2 +"MDL-41226","08/16/2013 04:31:34","User profile field submit buttons in awkward location when using clean theme.","The submit buttons look bad, and you should feel bad. Sorry, couldn't resist using that meme. # Visit /user/profile/index.php # Notice the ""Create new profile field OR Create new profile category"" look bad.",5 +"MDL-41227","08/16/2013 05:37:12","D&D moving module to hidden section does not change visibility","This is a regression from MDL-39814, only appears in 2.6 When moving a module (drag and drop) between visible and hidden section the module visibility is changed but the eye icon is not. When later I try to click on eye icon the module font gets toggled and it becomes completely random",5 +"MDL-41229","08/16/2013 05:49:14","Filepicker is broken in IE9","The repositories float in an area below the dialog. (Something that went in this week - probably MDL-39851).",5 +"MDL-41230","08/16/2013 07:16:24","Increase time limit for the tool_uploadcourse","How about setting it to 0 in both UI and cli? (like automated backup script does)",3 +"MDL-41232","08/16/2013 07:45:56","Revert temporary fix in filepicker for IE8","Remove the temporary patch on repository/filepicker.js The temp patch is used to force screenreader to read the filepicker's content. Replication steps: # Login as a student # Navigate to a course # Click the assignment # Click add submissions # Click the icon/list/tree view icon # Notice the page is announcing the content of the filepicker. ",3 +"MDL-41235","08/16/2013 08:20:03","Atto HTML Editor - The text box width changes if you toggle back and forth between wysiwyg and html mode","In the HTML 5 editor - The text box size changes if you toggle back and forth between wysiwyg and html mode.",2 +"MDL-41236","08/16/2013 08:21:16","Atto - In html mode the other buttons are disabled but the visual difference is too subtle","HTML5 Text Editor : In html mode the other buttons are disabled but the visual difference is too subtle. ",13 +"MDL-41237","08/16/2013 08:23:29","Atto HTML Editor - Decide on the list of headings to include","HTML 5 Text Editor: Decide how many levels of headings to support and any other text styles. ",8 +"MDL-41238","08/16/2013 08:24:22","Atto HTML Editor - Close the styles menu when clicked outside","HTML 5 Text Editor: Close the styles menu when clicked outside",13 +"MDL-41251","08/16/2013 16:39:56","Forum discussion page needs aria and role attributes to make navigation easier","In the forum discussion listing page, there are simple improvements to accessibility that can be made by identifying each post as a region and labeling it with the author name and date it was made. The changes don't make any structural or visual changes to the page.",13 +"MDL-41252","08/16/2013 16:44:43","Simple changes to main course page to improve accessibility","We can not navigate through the course page easily. H3 element are currently the way to understand that we are in a new section - if a content contain an h3 it may be confused as a new section. If we add the region aria role, then we could use screenreader shortcut to navigate between section. Original report: ""The main course page could use a few simple changes that would help identify each topic as a region and label them with the proper label. The changes can be made without changing the page structure or visual appearance."" ",13 +"MDL-41266","08/19/2013 04:47:12","Define logging interfaces in core","- Define logging interfaces in core - Define the expected log table structure with extra request information Interfaces are listed in : http://docs.moodle.org/dev/Logging_2#Public_API",8 +"MDL-41267","08/19/2013 04:48:38","Add support for admin tool subplugins","This was requested a few times already, since 2.6 this does not have any significant performance cost. It could help other tools too. The only potential problem is that admin tools are in $CFG->dirroot/$CFG->admin/tool, we need to deal with alternative $CFG->admin !== 'admin'",5 +"MDL-41268","08/19/2013 04:50:02","Implement tool_log plugin ","Implement tool_log plugin that serves as log manager and includes all store plugins as subplugins. http://docs.moodle.org/dev/Logging_2#Logging_management_plugin_.28tool_log.29",8 +"MDL-41269","08/19/2013 04:53:09","Implement logstore_standard plugin","Implement logstore_standard plugin http://docs.moodle.org/dev/Logging_2#DB_log_storage_plugin_.28log_standard.29",8 +"MDL-41270","08/19/2013 04:59:18","Implement new log storage management admin UI","Implement new log storage management UI http://docs.moodle.org/dev/Logging_2#Log_management_settings_page Note that this issue is not blocked by anything, it is just one page with list of stores with some toggles and links to individual admin setting pages",40 +"MDL-41271","08/19/2013 05:00:17","Implement log store settings and related filtering code","Implement new log store settings and related filtering code see: * http://docs.moodle.org/dev/Logging_2#Storage_settings * http://docs.moodle.org/dev/Logging_2#Log_store_settings_pages",8 +"MDL-41272","08/19/2013 05:02:01","Implement logstore_legacy emulation reader plugin","Implement logstore_legacy emulation reader plugin - it needs to map new selects to old mdl_log table and restore the legacy log data as new events. http://docs.moodle.org/dev/Logging_2#Legacy_log_table_reader_.28logstore_legacy.29",20 +"MDL-41273","08/19/2013 05:13:30","Edit PDF: Finish work on comments tool","Things to do for the comments tool: Prevent HTML tags from appearing in the comments (maybe switch to a textarea) Fix incorrect offsets when the page is scrolled. ",5 +"MDL-41274","08/19/2013 05:14:39","Edit PDF: Enable colour and tool chooser menus.","The HTML is in place but needs some javascript to toggle the menus open/closed and change the variables defining the current tool/colours. ",13 +"MDL-41275","08/19/2013 05:16:09","Edit PDF: Add list of generated pdf(s) to grading form","The final downloadable PDFs need to be shown to teachers (only shown to students currently). Previously generated PDFs should be overwritten when annotations are adjusted.",8 +"MDL-41276","08/19/2013 05:17:21","Edit PDF: Add line tool (including rectangle + oval tools)","Write the YUI renderer for the line tool. ",13 +"MDL-41277","08/19/2013 05:17:59","Edit PDF: Add rectangle tools","Add support for the rectangle tool.",13 +"MDL-41278","08/19/2013 05:18:37","Edit PDF: Add support for the oval tool","Add support for the oval tool",13 +"MDL-41279","08/19/2013 05:19:10","Edit PDF: Add support for the pen tool","Add support for the pen tool",13 +"MDL-41280","08/19/2013 05:19:44","Edit PDF: Add support for the stamp tool","Add support for the stamp tool",13 +"MDL-41281","08/19/2013 05:20:57","Edit PDF: Add support for the select tool","Add support for the select tool: * erase * drag and drop",13 +"MDL-41283","08/19/2013 05:41:22","Convert Course participation report to new logging API","http://docs.moodle.org/dev/Logging_usage#Course_participation_report http://docs.moodle.org/dev/Logging_2#Implementation_steps_2",20 +"MDL-41284","08/19/2013 05:44:25","Convert Statistics report to new logging API","http://docs.moodle.org/dev/Logging_usage#Statistics_report http://docs.moodle.org/dev/Logging_2#Implementation_steps_2 The idea is to do this with minimal effort faking only the contents of the temp tables based on new crud attribute...",40 +"MDL-41285","08/19/2013 05:49:09","Convert recent activity block to use new Events API","http://docs.moodle.org/dev/Logging_usage#blocks.2Frecent_activity.2Fblock_recent_activity.php http://docs.moodle.org/dev/Logging_2#Implementation_steps_2",20 +"MDL-41286","08/19/2013 05:58:40","Convert outline report to use new logging API","The outline report itself does one query in {log} but also each module implementing *_outline() does it too, see http://docs.moodle.org/dev/Logging_usage Instead the function returning the entries from log should be inside the outline report and each module should call this function. Outline report will have a setting which log storage to use.",40 +"MDL-41287","08/19/2013 07:04:01","Buffering in standard log storage","Improvement to Moodle standard DB log storage supporting buffering and performance tuning",100 +"MDL-41289","08/19/2013 09:29:56","create ajax method to get user pref","we have an ajax method to set a user pref but no way of getting the existing pref. It would be good if we could implement M.util.get_user_preference to match M.util.set_user_preference() I'd like to use this to replace the use of cookies to mange debugging in SCORM. Of course - I'm open to other ideas on how to remove the use of cookies from SCORM debugging if someone has a better idea? ",5 +"MDL-41307","08/20/2013 07:15:17","Tags needs updating for changes to fullname function.","You need to update your sql to include additional name fields in the user object. line 3637 of /lib/moodlelib.php: call to debugging() line 263 of /tag/manage.php: call to fullname() I also found that tag/manage.php has a call to fullname() that hasn't been updated either.",2 +"MDL-41316","08/20/2013 14:41:47","Spam cleaner using ORACLE","I’m using Oracle and when I click on Site administration / ► Reports / ► Spam cleaner I get this error: ORA-00933: SQL command not properly ended SELECT u.*, p.summary FROM d_user AS u, d_post AS p WHERE ( LOWER(p.summary) LIKE LOWER(:o_sumpat0) ESCAPE '\' OR LOWER(p.summary) LIKE LOWER(:o_sumpat1) ESCAPE '\' OR LOWER(p.summary) LIKE LOWER(:o_sumpat2) ESCAPE '\' OR LOWER(p.summary) LIKE LOWER(:o_sumpat3) ESCAPE '\' OR LOWER(p.summary) LIKE LOWER(:o_sumpat4) ESCAPE '\' OR LOWER(p.summary) LIKE LOWER(:o_sumpat5) ESCAPE '\' OR LOWER(p.summary) LIKE LOWER(:o_sumpat6) ESCAPE '\' OR LOWER(p.summary) LIKE LOWER(:o_sumpat7) ESCAPE '\' OR LOWER(p.summary) LIKE LOWER(:o_sumpat8) ESCAPE '\' ) AND u.deleted = 0 AND u.id=p.userid AND u.id <> :o_userid I resolved deleting aliases in table names changing admin/tool/spamcleaner/index.php in this way: @@ -179,12 +179,12 @@ function search_spammers($keywords) { $conditions7 = '( '.implode(' OR ', $keywordfull7).' )'; $sql = ""SELECT * FROM {user} WHERE deleted = 0 AND id <> :userid AND $conditions""; // Exclude oneself $sql2 = ""SELECT u.*, p.summary FROM {user} u, {post} AS p WHERE $conditions2 AND u.deleted = 0 AND u.id=p.userid AND u.id <> :userid""; $sql3 = ""SELECT u.*, p.subject as postsubject FROM {user} u, {post} AS p WHERE $conditions3 AND u.deleted = 0 AND u.id=p.userid AND u.id <> :userid""; $sql4 = ""SELECT u.*, c.content FROM {user} u, {comments} AS c WHERE $conditions4 AND u.deleted = 0 AND u.id=c.userid AND u.id <> :userid""; $sql5 = ""SELECT u.*, m.fullmessage FROM {user} u, {message} m WHERE $conditions5 AND u.deleted = 0 AND u.id=m.useridfrom AND u.id <> :userid""; $sql6 = ""SELECT u.*, fp.message FROM {user} u, {forum_posts} fp WHERE $conditions6 AND u.deleted = 0 AND u.id=fp.userid AND u.id <> :userid""; $sql7 = ""SELECT u.*, fp.subject FROM {user} u, {forum_posts} fp WHERE $conditions7 AND u.deleted = 0 AND u.id=fp.userid AND u.id <> :userid""; ",3 +"MDL-41337","08/21/2013 03:15:51","Can't delete the last file from filearea (under some circumstances)","I added an image via the file uploader in the course summary to test out the feature. I didn't like the way it works, so I deleted it. And it returns as soon as I click 'save changes'. So I deleted it again. And it returns. It won't stay deleted!",20 +"MDL-41347","08/21/2013 06:45:43","tool_uploadcourse: Invalid restore files are not well handled","If there are invalid restore files (or courses to restore from), the prepare() method does not return false, even though it logs the errors. This causes the proceed() method to be called, which raises an exception because it should not happen. The course method to get the content restore dir should return whether it was successful or not, in order to return false during the prepare method.",3 +"MDL-41352","08/21/2013 08:08:17","Mymobile theme: javascript error on course pages","Enable mymobile. On the front page, javascript erro: {panel} GET http://jerome.moodle.local/m/integration_master/theme/jquery.php/core/jquery-1.10.2.min.map 404 (not found) jerome.moodle.local/m/integration_master/:1 Uncaught TypeError: Cannot call method 'all' of null {panel} ",13 +"MDL-41379","08/22/2013 03:08:01","button alignment on course outcome screen is wonky in Clean","See screenshot",5 +"MDL-41385","08/22/2013 08:41:30","Create icons for non-default buttons","There are a bunch of icons that still need to be created, but are unlikely to be seen, as they are not on by default. These icons are: # delete_table # delete_col # delete_row # insert_col_after # insert_row_after # insert_col_before # insert_row_before # table_props # cell_props # row_props # advance_hr # select_all # absolute # abbr # acronym # cite # delete # insert # fullpage # restore_draft # spellchecker # visualblocks # backward # forward # visualaid I know these are a lot of icons, and these have all been moved to menus in TinyMCE 4 because they are so hard to represent in a 16x16 greyscale image, but I think if we are going to make the change to these new icons they need to be done properly.",20 +"MDL-41387","08/22/2013 10:11:39","The string ""Deleted - course tags"" needs to be properly capitalised","# Create a course. # Delete it. # Notice on the deletion process that it says ""Deleted - course tags"", rather than ""Deleted - Course tags"".",1 +"MDL-41389","08/22/2013 16:29:24","The auth/db authentication plugin should trigger the user_created/updated event","h3. Summary Handling events is a great way to tap into Moodle to extend some of it parts. I need to add some logic to authorization process. Moodle instance I work on uses two auth plugins: db and ldap. LDAP already provide events when users are created. I'd like to extend db plugin to do the same. h3. ToDo Extend auth/db to emit event on user creation. ",8 +"MDL-41398","08/23/2013 04:52:00","Clean theme needs the upgrade page to be dumb","# Install Moodle 2.2 # Set in config.php: $CFG->theme = 'clean'; # Attempt to upgrade to Moodle 2.6: On /admin/, it all goes pete tong and you can't move forward: {code} [Fri Aug 23 11:47:27 2013] [error] [client 127.0.0.1] Default exception handler: Table ""course_format_options"" does not exist Debug: Error code: ddltablenotexist * line 567 of /lib/dml/moodle_database.php: dml_exception thrown * line 1189 of /lib/dml/moodle_database.php: call to moodle_database->where_clause() * line 582 of /course/format/lib.php: call to moodle_database->get_records() * line 239 of /course/format/lib.php: call to format_base->get_format_options() * line 419 of /course/format/lib.php: call to format_base->get_course() * line 1788 of /lib/navigationlib.php: call to format_base->extend_course_navigation() * line 1093 of /lib/navigationlib.php: call to global_navigation->load_course_sections() * line 2977 of /lib/navigationlib.php: call to global_navigation->initialise() * line 3020 of /lib/navigationlib.php: call to navbar->has_items() * line 55 of /theme/bootstrapbase/renderers/core_renderer.php: call to navbar->get_items() * line 57 of /theme/clean/layout/columns1.php: call to theme_bootstrapbase_core_renderer->navbar() * line 847 of /lib/outputrenderers.php: call to include() * line 777 of /lib/outputrenderers.php: call to core_renderer->render_page_layout() * line ? of unknownfile: call to core_renderer->header() * line 234 of /lib/outputrenderers.php: call to call_user_func_array() * line 146 of /admin/renderer.php: call to plugin_renderer_base->__call() * line 146 of /admin/renderer.php: call to core_admin_renderer->header() * line 264 of /admin/index.php: call to core_admin_renderer->upgrade_confirm_page() , referer: http://dan.moodle.local/m/pm/ {code}",8 +"MDL-41413","08/26/2013 02:50:04","Replace enrol_meta event handlers with event observers","Replace enrol_meta event handlers with event observers ",8 +"MDL-41415","08/26/2013 04:26:23","Fix user_loggedin event to respect base access specifiers and wrong usage of object creation in get_name()","get_legacy_logdata() should be protected in user_loggedin event get_name() should not use new with get_string()",1 +"MDL-41419","08/26/2013 09:31:18","core_files_externallib_testcase::test_get_files sporadically fails","This test keeps failing on the integration server because of minor time differences. # Ideally you would change the test so it doesn't depend on us having the two evaluations happen within 1 second of each other because that often leads to failures. # But also, your test data is wrong, its passing because php sucks, but as this diff below shows: ## {{'itemid' => 1}} should be {{'itemid' => '1'}} ## {{'isdir' => null}} should be {{'isdir' => false}} Output: {code} core_files_externallib_testcase::test_get_files Failed asserting that two arrays are equal. --- Expected +++ Actual @@ @@ 'filearea' => 'content' - 'itemid' => '1' + 'itemid' => 1 'filepath' => '/' 'filename' => 'Simple4.txt' 'url' => 'http://www.example.com/moodle...e4.txt' - 'isdir' => false - 'timemodified' => '1377497719' + 'isdir' => null + 'timemodified' => '1377497718' ) ) ) /var/lib/jenkins/git_repositories/master/files/tests/externallib_test.php:285 /var/lib/jenkins/git_repositories/master/lib/phpunit/classes/advanced_testcase.php:76 {code} http://integration.moodle.org/job/20.%20Run%20phpunit%20UnitTests%20(master)/1551/testReport/junit/(root)/core_files_externallib_testcase/test_get_files/",2 +"MDL-41428","08/26/2013 17:10:19","Missing space between coursefiles and course short name in filepicker","Missing space between coursefiles and course short name in filepicker I've attached a screenshot",3 +"MDL-41437","08/27/2013 07:32:55","missing plugins are not displayed on plugins overview page","1/ modules and blocks tell you when there are plugins that were not uninstalled properly, but other types of plugins do not we need to look for versions in config_plguins table... this creates multiple problems because there are leftovers in multiple core tables and admin can not easily force uninstall 2/ plugin_manager class should be used strictly for management of plugins, for everything else it is huge, slow and often even incorrect because the get_plugins method returns even uninstalled modules and blocks. The solution is to use core_component which is extremely fast compared to plugin_manager abstraction. 3/ Another problem is that modules and blocks store version info in special db tables instead of standard config_plugins table. 4/ review plugin_manager performance and caching",20 +"MDL-41438","08/27/2013 07:59:02","Change core renderer methods to produce plain headings by default. ","2 functions in the core renderer need some changes so that by default they do not add the 'main' class to headings and so that the level can be specified for heading_with_help. This would need documenting in themes/upgrade.txt and all uses of .main class in all core themes updated to work without it. ",2 +"MDL-41440","08/27/2013 09:26:32","new completion events have ""new get_string(...)"" - get_string is a method not a class.","grep -r ""new get_string"" * lib/classes/event/course_completed.php: return new get_string('eventcoursecompleted', 'core_completion'); lib/classes/event/course_completion_updated.php: return new get_string('eventcoursecompletionupdated', 'core_completion'); lib/classes/event/course_module_completion_updated.php: return new get_string('eventcoursemodulecompletionupdated', 'core_completion'); ",1 +"MDL-41447","08/27/2013 17:25:58","Upgrading from 1.9 to 2.2 (en-route to 2.4.5) has errors with certain kinds of URL link","We had a customer site running 1.9.19. They had (in most of their courses) a file link resource to an uploaded html file at the top of the course, a big file of instructions in many sections, and then further down in each topic section they had a file/website link resource to the same uploaded file, but specifying an anchor in the file, so that the learner could click on this resource and be taken to the relevant part of the big html file. So those resources all ended with the same filename, like this: /path/to/file/instructions.html#3 The #3 (or whatever number) opened the html file and scrolled down to the relevant anchor. If you run a moodle upgrade on this site from 1.9 to 2.2 (which *has* to be done before going to 2.4) then the main uploaded file link resource converts correctly, but the resources containing links to specific anchors in that html file start to convert as file links (rather than website links) and then fail, because the file instructions.html#3 (or whatever) does not exist. This particular customer site ended up with about 1400 broken resources, all of them of the above type - a link to an uploaded html file with the anchor number specified on the file link. I know that 1.9 and 2.2 are no longer officially reported, but we, in common no doubt with a lot of partners, still have quite a number of 1.9 sites to upgrade, and if we come across this kind of resource link again, and the conversion process does not handle the resource correctly we end up with potentially hundreds or thousands of broken resources to fix. Anyone got any ideas on how to handle this kind of resource? Any chance of the upgrade code in 2.2 being altered to handle this?",20 +"MDL-41456","08/28/2013 02:40:17","Fix existing events to respect base access specifiers","Events in assignment has get_legacy_logdata() as public. It should be protected as in base event. Also, get_name() should return string and not lang_string object.",1 +"MDL-41481","08/29/2013 03:31:03","Background scrolling is not locked when using activity chooser in a mobile device with clean theme","Replication steps:- # Set clean theme for mobile devices. # on a mobile device open activity chooser # Scroll down # I was able to scroll down the page well passed the activity chooser. Ideally the page should be locked as we do for desktop browsers. ",100 +"MDL-41504","08/30/2013 03:25:39","Tidying up the new mod edit buttons","There are couple of things that look slightly unfinished with new modules editing buttons. 1. With $CFG->modeditingmenu off the spacing between icons is uneven (see screenshot) 2. With $CFG->modeditingmenu on the open menu does not close after selecting an item from it. Especially inconvinient in case of clicking on buttons to change identation. Or also menu stays open when one clicks ""delete"" and then ""cancel"" 3. On narrow screen the module editing icons and completion icon don't like each other (attached screenshots in standard and clean themes). -and last, it was probably discussed already, but could we make this button to toggle the menu and not only open? I would assume that this is what people are expecting. Thanks!- - already requested in MDL-40976",20 +"MDL-41505","08/30/2013 03:42:39","Clean theme: Section visibility icon disappears on narrow screens","2.5 only. Open course page (topic/weeks format) with editing mode on, change theme to Clean. Notice that each section has move and visibility icons. Resize window to make it small and both icons disappear.",8 +"MDL-41534","09/02/2013 05:25:49","Extra blank rows shown in Assignment Submissions screen and Participants screen","Currently, extra blank rows are drawn in the Assignment Submissions screen if the 'Submissions per page' setting is greater than the number of submissions. This also happens in the course Participants screen where the number of participants is fewer than 20.",1 +"MDL-41538","09/02/2013 07:56:58","Edit PDF: the pdf dialog opens then closes almost straight away","When you launch the pdf editor, the dialog closes automatically on the loading icon. After looking into it I found out that it is due to the PDF format. TCPDF ERROR: This document (/home…t supported by the free parser shipped with FPDI. Which after googling: http://stackoverflow.com/questions/5441107/fpdf-error-this-document-mine-pdf-probably-uses-a-compression-technique-which Damyon suggest that we may be able to force conversion in ghostscript (but it is not sure it works all the time). What important to know is how often the issue occurs. Does it impact a lot of people? PS: it would be good to be a bit more user friendly on these kind of error (like an error message somewhere). ",2 +"MDL-41541","09/02/2013 08:54:03","Edit PDF: test_gs_path is broken","Ghostscript is installed but however it returns this error when testing the path in the admin: Unable to generate image - details: Command:/usr/bin/gs -q -sDEVICE=png16m -dSAFER -dBATCH -dNOPAUSE -r100 -dFirstPage=2 -dLastPage=2 -dGraphicsAlphaBits=4 -dTextAlphaBits=4 -sOutputFile=""/home/nginx/localhost/moodles/integration_master_pdf/moodledata/temp/assignfeedback_editpdf_test/image_page1.png"" ""/home/nginx/localhost/moodles/integration_master_pdf/moodle/mod/assign/feedback/editpdf/tests/fixtures/testgs.pdf"" Result: No pages will be processed (FirstPage > LastPage). ",2 +"MDL-41551","09/02/2013 17:20:59","Block drag/drop broken for clean theme on /my","We try to automatically create drop zones for layouts which do not specify them when we are drag/dropping. However, we aren't properly handling these nodes after they are created. In particular, the central block in the Clean theme does not have the appropriate wrapperage - an element with id block-region-[region] (block-region-content). We should automagically create this, and indeed we do, but we don't actually return it or attempt to make use of it and thus we get an error: 'Can not call all of undefined'.",100 +"MDL-41559","09/03/2013 06:41:26","Replace handlers by observers for groups in mod_quiz","MDL-39958 has replaced the old events, but has not migrated the handlers to observers. This needs to be done.",3 +"MDL-41565","09/03/2013 08:42:59","Observers do not include file from the right location","The observers property _includefile_ is not relative to dirroot anymore. Add the following observer to any events file (for instance lib/db/events.php): {noformat} $observers = array( array( 'eventname' => '\core\event\group_created', 'callback' => 'print_object', 'includefile' => '/lib/datalib.php' ) ) {noformat} Purge cache, and create a new group, and make sure the content of the event has been printed out.",2 +"MDL-41569","09/03/2013 11:30:09","Remove nowrap from .flexible th","One of Moodle's routines for creating table markup adds a .flexible class to the table, and the core CSS then adds whitespace: nowrap to the table headers. This is obviously intended to make the headers look neater on big screens, but makes the tables harder to view on small screens. ",40 +"MDL-41589","09/04/2013 06:56:38","Cannot delete a user's role in a course","It is not possible to delete a user's role in a course. *Replication steps:* # Log in as admin/teacher # Navigate to a course # Add a role to a user enrolled in the course # Attempt to delete the role by clicking the X next to the role name _Expected result:_ A confirmation dialogue should appear confirming that you do want to delete the role. _Actual result:_ No dialogue appears, there is no confirmation and no deletion.",2 +"MDL-41591","09/04/2013 07:56:41","Z-index issues with filepicker.","# Go to your private files area and create lots of shortcuts and alias. # Open file picker Make sure you donot see the Z-index issues as shown in this screenshot, where the link and alias icons overlap over the filepicker https://tracker.moodle.org/secure/attachment/34420/34420_bonfire-screenshot-20130904-141710-754.png",8 +"MDL-41604","09/05/2013 04:07:22","Fallback to theme_config::DEFAULT_THEME if a theme (or parent) does not exist.","{panel}1. If a theme has been selected that does not physically exist we fall back to theme_config::DEFAULT_THEME. 2. Do the same if one of theme's parent is missing. {panel} ",13 +"MDL-41605","09/05/2013 04:40:38","Search filter on enrolled users page update filter while deleting user role in non-js mode.","Steps to replicate: # Log in as admin/teacher # Navigate to a course # Add a role to a user enrolled in the course # Disable browser js. # Delete role of user # when it is back to enrolled user page, the above user is not displayed and role is set in filter. ",2 +"MDL-41608","09/05/2013 04:45:58","Add mustache-powered renderable for notifications","Grrrr took me 5 minutes to track this down, theme_bootstrapbase_core_renderer::notification doesn't apply any custom classes. It looks for just 4 classes and disregards the rest. Also it expects that $classes is a string which is not the case, it is valid to pass and array to classes as well. {code} /* * This renders a notification message. * Uses bootstrap compatible html. */ public function notification($message, $classes = 'notifyproblem') { $message = clean_text($message); $type = ''; if ($classes == 'notifyproblem') { $type = 'alert alert-error'; } if ($classes == 'notifysuccess') { $type = 'alert alert-success'; } if ($classes == 'notifymessage') { $type = 'alert alert-info'; } if ($classes == 'redirectmessage') { $type = 'alert alert-block alert-info'; } return ""
$message
""; } {code} *Edit 09/Aug/2014* Summarizing this issue: * Sam initially discovered the issue on 05/Sep/13, wherein {{theme_bootstrapbase_core_renderer::notification}} doesn't apply any custom classes. * Discussion took place and David sketched out a new notification API where rather than calling {{notification}} with one or more classes, notifications should be emitted by using one of {{alert_info}}, {{alert_success}}, {{alert_warning}}, {{alert_danger}} depending on severity level. * Jason reviewed David's changes. * Jetha discovered Sam's initial issue in 2014 when trying to add support for detailed notifications (e.g. CSV import stack traces), and a discussion at HQ took place - the conclusion of which is that *while deprecating {{notification}} and its use in core is the right thing to do, the surface area to amend is too large to do in one issue*. This issue contained three things: * Fixing the behaviour Sam initially identified, wherein {{theme_bootstrapbase_core_renderer::notification}} doesn't apply any custom classes ** This is achieved by removing {{theme_bootstrapbase_core_renderer::notification}} entirely such that {{core_renderer::notification}} can handle things with the help of a new array in {{theme_bootstrapbase_core_renderer}} containing mappings between Moodle and Bootstrap CSS classes. * Integrating David's new notification API, but not yet deprecating {{notification}} (which will be done in a separate issue, probably after the Gradebook 2014 push). * Adding support for an optional {{details}} parameter on both old and new notification APIs for more detailed messages. *Edit 18/Mar/2015* This issue is now simply about: * adding support for adding additional classes to a notification beyond simply notifyxxx * creating renderables * rendering notifications with Mustache, see MDL-49152",5 +"MDL-41615","09/05/2013 09:37:01","Fix heading level for Quiz","Fix heading level for site consistency.",8 +"MDL-41619","09/05/2013 11:34:10","Event files should not be accessed directly (ie. through the URL).","Not all the events declare defined('MOODLE_INTERNAL') || die();",1 +"MDL-41633","09/06/2013 05:05:03","Edit PDF: create layout mockup","As it was mentioned during the scrum meeting we should decide of a layout for the edit pdf feedback.",20 +"MDL-41664","09/09/2013 04:07:01","Add the ability to format the years in the new calendar plugin.","Currently the calendar plugin only takes a starting year and ending year as information for creating the select box. I'm trying to create a Japanese calendar type, and years don't run in this fashion. Additional information also needs to be added about which emperor was ruling during that year. I propose a new method get_years(), which works in the same fashion as get_days() and get_months(). I have also now included the code to change the order of the select boxes used for selecting the date as well.",8 +"MDL-41690","09/10/2013 04:48:32","Deprecate previously public methods in class cm_info","The following methods of class cm_info were public before Moodle 2.6. They are changed to private in Moodle 2.6 but still can be accessed publicly via magic __call() method. They have to display deprecation message if accessed from outside of the class in 2.7 and in 2.8 the array $standardmethods and function __call() need to be completely removed. Functions are still used as getter methods for the corresponding properties {code} /** * List of methods with no arguments that were public prior to Moodle 2.6. * * They can still be accessed publicly via magic __call() function with no warnings * but are not listed in the class methods list. * For the consistency of the code it is better to use corresponding properties. * * These methods be deprecated completely in later versions. * * @var array $standardmethods */ private static $standardmethods = array( // Following methods are not recommended to use because there have associated read-only properties. 'get_url', 'get_content', 'get_extra_classes', 'get_on_click', 'get_custom_data', 'get_after_link', 'get_after_edit_icons', // Method obtain_dynamic_data() should not be called from outside of this class but it was public before Moodle 2.6. 'obtain_dynamic_data', ); {code} ",3 +"MDL-41699","09/10/2013 14:33:39","Editpdf - Let students view pdf online (not just downloadable version)","This has to only include the list of comments included in the generated pdf.",8 +"MDL-41702","09/10/2013 15:53:31","Can't delete logo icon - Clean theme ","After adding a logo in Clean theme logo settings trying to delete him from the fil e picker it is not shown in the file picker and then -> click save changes -> the icon still can be see in the logo place. after clearing theme caches and browser cache the logo still there. -> then clicking again the Clean Settings and I can still see the icon image in the logo (file picker) setting although I deleted it from there.",8 +"MDL-41713","09/11/2013 06:35:23","Copy the relevant icons from new TinyMCE theme to atto","The icons in atto don't match the monochrome icons used elsewhere in Moodle core. ",13 +"MDL-41716","09/11/2013 07:14:41","Atto: Resizing the editor is inconsistent","These are pretty minor issues: a) you can resize source mode but not wysiwyg mode b) when resizing the header doesn't match the new size c) you can not resize below the origin width on Chrome, you can on Firefox",5 +"MDL-41726","09/11/2013 13:40:32","Serious performance regression in course reset of groups, including race condition that may send erroneous emails to students","Steps to reproduce # Create a large course, say with 10,000 users, a few dozen groups each with a few thousand members, and several quizzes. (The OU has courses this big.) # Time doing a course reset to remove all group members. (Also look at the DB query count in the footer.) Do this for Moodle versions both before and after MDL-39958 was integrated. (Note that MDL-39958 was committed with MDL-39959 is the issue id in the commit comment.) That is the perofrmance problem. Now the nasty race condition. # Work out which order $DB->get_recordset('groups', array('courseid' => $courseid)); in groups_delete_group_members, in particular identify which goup will be deleted first, and which last. # For one quiz, set Time limits as follows: #* Quiz closes: Now + 1 day #* Quiz closes group override for last group to be processed: Now - 1 day #* Quiz closes group override for first group to be processed: Now + 1 day # Set the quiz to have attempts become overdue when time expires, and to send an email notification to student when this happens. # Start an attempt as one student that is a member of both those groups. Answer some questions but don't submit. # Now, try to work out when cron will next run, and just beofre that, do a course reset to remove all the group members, Now also need to be between T + 1 minute and T + 1 day. Expected result: The student does not get a notification, because initially the close date is Now + 1 day, and when they are removed from both groups it is Now + 1 day. Possible result: Cron runs between time the student is removed from the first group, and the time they are removed from the last group. Hence cron sees them as due to submit T - 1 day ago, and so makes their attempt overdue, and sends them an incorrect email. ",100 +"MDL-41773","09/13/2013 06:27:38","Forum: code an accessible layout","Forums in Moodle 2.6 are very similar in layout to the forum in Moodle 1.0. Small fixes for accessibility have been made but it's becoming clear that a complete redesign of the layout is necessary for accessibility and also usability in the general sense. This issues is for discussing the proposed new accessible forum layout at http://docs.moodle.org/dev/Advanced_Forums_Accessible_Display_Specification",100 +"MDL-41787","09/14/2013 10:48:09","MATURITY_ALPHA and friends cannot be defined in lib/setuplib.php","The problem is that core_component includes version.php files which include theses constants, that means we can not define them in lib/setuplib.php which gets included later...",2 +"MDL-41792","09/15/2013 07:27:15","The calendar itself should display dates depending on the calendar type used","With the introduction of MDL-18375 we need the calendar to display the dates in the format defined by the calendar type being used, not just Gregorian.",100 +"MDL-41796","09/16/2013 02:49:59","Edit PDF: Add support for the highlighter tool","Also needs transparent images for backend rendering.",5 +"MDL-41800","09/16/2013 02:56:45","EditPDF: Add comments quicklist","Add the comments quicklist + searching interface.",8 +"MDL-41805","09/16/2013 05:00:31","EditPDF: Create keyboard shortcuts for tools.","The original had a set of keyboard shortcuts to allow quickly switching tools without scrolling to the toolbar. We just need to do some research and make sure we don't do this in a way that will conflict with built in shortcuts (e.g. for screen readers).",8 +"MDL-41811","09/16/2013 09:57:07","Load admin menus using AJAX when not on admin pages","Not loading plugin's setting under Site administration improve performance for admin/manager's. h5. Without plugin settings loaded {noformat} 1.21122 secs RAM: 94.5MB RAM peak: 95.6MB Included 292 files Load average: 0.58 Session: 33.3KB {noformat} h5. With plugins settings loaded {noformat} 1.809636 secs RAM: 110.9MB RAM peak: 112MB Included 406 files Load average: 0.36 Session: 33.3KB {noformat} This can be easily observed by adding following code in admin/settings/plugins.php {noformat} // require_once(""$CFG->libdir/pluginlib.php""); // $allplugins = plugin_manager::instance()->get_plugins(); $allplugins = array('mod' => array(), 'format' => array(), 'block' => array(), 'message' => array(), 'auth' => array(), 'enrol' => array(), 'auth' => array(), 'repository' => array(), 'webservice' => array(), 'editor' => array(), 'filter' => array(), 'qtype' => array(), ); {noformat} ",20 +"MDL-41819","09/16/2013 19:16:48","Grades lost when editing in the grader report due to max_input_vars","I have a number of manual grade items used to track offline assignments. Recently I've found with the latest moodle version that the last 4-7 students in the grader report do not have their entered grades saved. This seems to be something related to sort - if I sort by their first names and enter the grades again, they are saved properly. If I reverse sort last names, grades are saved properly as well. Procedure: 1. Create a new manual grade item named ""Pop Quiz 1 - Neural & Hormonal Lecture"" 2. Have a class of approximately 27 students. 3. Enter grades using the Grader Report with editing turned on. 4. Hit update. I've noticed that this does not happen when AJAX grading is turned on & working (i.e. the cells are changing color). This happens both in Google Chrome (with a variety of extensions) and Safari (with no extensions), on a Mac running Mountain Lion.",40 +"MDL-41824","09/17/2013 02:22:09","Edit PDF: Split up javascript into smaller modules","Suggestions are: comments, annotations, menus, quicklist and editor",40 +"MDL-41833","09/17/2013 08:10:53","SetType warnings in feedback when trying to delete a response","# Create a feedback activity # submit a feedback as student # Try deleting the student response as Admin. # make sure you don't get the following error:- {code} Did you remember to call setType() for 'completedid'? Defaulting to PARAM_RAW cleaning. line 1336 of /lib/formslib.php: call to debugging() line 281 of /lib/formslib.php: call to moodleform->detectMissingSetType() line 202 of /lib/formslib.php: call to moodleform->_process_submission() line 59 of /mod/feedback/delete_completed.php: call to moodleform->moodleform() Skip to main content test You are logged in as Admin User (Log out) {code}",2 +"MDL-41843","09/17/2013 18:04:14","Incorrect uses of namespace in mod/lti/OAuthBody.php","OAuthBody.php states moodle\mod\lti namespace, but Exception class doesn't exist in this namespace, it should be \Exception or use OAuthException.",5 +"MDL-41856","09/18/2013 05:23:19","Edit PDF: Update more icons","Update more icons such as: # previous page # next page # search comment # comment color options # shapes color options # stamp options # generate pdf feedback",20 +"MDL-41885","09/19/2013 07:28:48","Modules should declare their use of the question bank","At the moment we've got no way of knowing which modules are making use of the question bank. This is problematic in backup when we need to know which modules will not function without it",8 +"MDL-41903","09/19/2013 20:49:22","Import Typo3 4.7.15","see http://typo3.org/download/",2 +"MDL-41904","09/19/2013 21:17:33","Import markdown 1.3","see http://michelf.ca/projects/php-markdown/",2 +"MDL-41938","09/24/2013 12:16:49","Course backup contains empty 'contenthash' value in files.xml","(this is my first bug report, apologies if I miss anything) When trying to restore a course, we receive the below message Unknown exception related to local files (Invalid file path) Debug: Error code: storedfileproblem * line 893 of \lib\filestorage\file_storage.php: file_exception thrown * line 906 of \backup\util\dbops\restore_dbops.class.php: call to file_storage->create_directory() * line 1520 of \backup\moodle2\restore_stepslib.php: call to restore_dbops::send_files_to_pool() * line 34 of \backup\util\plan\restore_execution_step.class.php: call to restore_course_legacy_files_step->define_execution() * line 153 of \backup\util\plan\base_task.class.php: call to restore_execution_step->execute() * line 163 of \backup\util\plan\base_plan.class.php: call to base_task->execute() * line 157 of \backup\util\plan\restore_plan.class.php: call to base_plan->execute() * line 315 of \backup\controller\restore_controller.class.php: call to restore_plan->execute() * line 147 of \backup\util\ui\restore_ui.class.php: call to restore_controller->execute_plan() * line 46 of \backup\restore.php: call to restore_ui->execute() ",13 +"MDL-41953","09/25/2013 00:02:18","Relax component name rules slightly to allow more than one digit at the end","The regexp on PARAM_COMPONENT is currently: {code} /^[a-z]+(_[a-z][a-z0-9_]*)?[a-z0-9]$/ {code} Would it be possible to change it to: {code} /^[a-z]+(_[a-z][a-z0-9_]*)?[a-z0-9]+$/ {code} The reason is that at Totara we have a module called 'feedback360' which doesn't meet the component criteria. It seems strange that you can have a module called 'feedback3' but not 'feedback360'. ",2 +"MDL-41962","09/25/2013 06:39:01","Event handlers are not removed from the DB after upgrade","After switching handlers to observers, the mdl_events_handlers table should not contain the old event handlers. It seems that the upgrade logic only adds new handlers, but does not remove obsolete ones.",5 +"MDL-41989","09/26/2013 02:37:53","Fix atto's visual response/appearance for non touch devices","# Add a change of background when a button is active # Adjust padding to make the sizes slightly better # Possibly change the cursor to the pointer - this is open to debate at the moment, as most UI don't do this for buttons.",5 +"MDL-41993","09/26/2013 04:40:30","Atto produces ugly html","Some of this is the browsers fault, some of it is YUI's fault. There is a separate issue for the browser implementation of indent/outdent any other cases we should also deal with in a separate issue. This issue focuses on cleaning all of the YUI ids from the content on save. ",1 +"MDL-41994","09/26/2013 04:46:37","Notice: Undefined property on calendar export page","When not logged in and exporting a calendar the following notice occurs - ""Notice: Undefined property: stdClass::$password ..""",3 +"MDL-41995","09/26/2013 04:52:08","Calendar export page does not set page layout correctly","# Visit your Moodle site (do not log in). # Click on the calendar date on the calendar block. # Click 'Export calendar' button. # Notice there is no menu.",3 +"MDL-41999","09/26/2013 06:30:43","do not use $USER->password and $USER->description directly","For performance and security we unset $USER->password and $USER->description directly. Fetch from DB if necessary.",2 +"MDL-42001","09/26/2013 07:10:41","Use observers instead of handlers in mod_chat","The user_logout event is now different, we should then use the observers.",5 +"MDL-42002","09/26/2013 08:11:42","Redesign TinyMCE icons derived from icoMoon for consitent weight and size","Many or some of the icons from icoMoon need to be redesigned from scratch to make it look consistent in terms of weight and size. Resizing doesn't solve it plus it only makes it blurry",40 +"MDL-42003","09/26/2013 08:14:52","Use observers instead of handlers in mod_forum","Since role_assigned has been converted to a new event, we should use an observer there.",5 +"MDL-42004","09/26/2013 09:21:04","Use observers instead of handlers in enrol_cohort","They should have been converted along with the cohort_* events.",5 +"MDL-42014","09/27/2013 01:27:31","Session cache stops working after upgrade to 2.5.2","Finally we were able to reproduce the caches problem that was reported in MDL-41942 After the upgrade to 2.5.2 in datadir/muc/config.php the value {code} $configuration['stores']['default_session']['features'] = 6; {code} If you install the same version or just remove muc/config.php and let it to re-generate the value becomes 14. With this configuration and 2.5.2 code the session caches do not work at all - consecutive set() and get() inside the same request return false. To reproduce on dev sites just edit datadir/muc/config.php and substitute features value to 6. IMHO there are two problems here: - config.php is not regenerated during upgrade - difference 8 means 'IS_SEARCHABLE' which should not affect function get() anyway test script: {code} set($key, 'Test value'); $value = $coursecatcache->get($key); echo 'core/coursecat : '; echo ($value === false) ? 'FAILED' : 'OK'; $cache = cache::make_from_params(cache_store::MODE_SESSION, 'testing', 'sessioncachetest'); $key = uniqid('-randomkey-'); $cache->set($key, 'Test value'); $value = $cache->get($key); echo '; test session cache : '; echo ($value === false) ? 'FAILED' : 'OK'; {code}",20 +"MDL-42021","09/27/2013 07:01:52","Event base class should force an objectid if objecttable is defined","Currently we throw a message if objectid is set but not objecttable, the other way around should do the same.",2 +"MDL-42023","09/27/2013 07:24:06","Edit PDF: Integrate editpdf plugin for mod_assign","This task is to integrate the initial version of the editpdf plugin. There are a few issues in the Epic that will be done after the release of 2.6 (particularly the background processing) so we want to keep the epic open and make this first version one of the sub tasks.",13 +"MDL-42025","09/27/2013 08:09:47","Edit PDF: Add behat tests","We need to add behat tests for the Edit PDF plugin - but there are 2 things that require solving first. 1. How to simulate mouse/touch drags 2. How to skip the tests if ghostscript is not available.",20 +"MDL-42026","09/27/2013 08:36:56","Atto: Styles selector picks up styles from theme which makes it look crazy","Changing this to a plain list of links would look better.",1 +"MDL-42028","09/27/2013 09:57:01","EditPDF: replace the loading icon by a progress bar as a user could think it's broken for large pdf","Add a bit more information when the PDF is long to generate otherwise it seems that it's broken.",20 +"MDL-42029","09/27/2013 09:59:37","Editpdf: Page selector should indicate what page you are on","We probably don't need to Go to Page option. It is only here to explain what the select box is about. It would clear enough if the page are called Page 1, Page 2, Page 3. It also makes sense to display the page one as Page 1 and not Go to page.",8 +"MDL-42030","09/27/2013 10:01:58","EditPDF: when selecting stamp image the stamp tool is not selected","When you select a stamp tool image, the stamp tool is not selected. Also if you select the stamp tool and select the color tool, then the last tool is not selected.",3 +"MDL-42044","09/28/2013 08:03:05","Install add on fails validation when zip does not contain folder entries","When the auto install add ons validation looks for the /lang/en folder. If it does not find it, then validation fails and the plugin cannot be installed. Depending on how the add on zip file was created however, there may be no folder entries in the zip file. Just files with the full file path. Most unzip apps can handle both ok. To illustrate, the contents of the PoodLL filter which fails validation look a bit like this: poodll/lang/en/filter_poodll.php poodll/module.js poodll/pix/download.gif But the ensemble filter zip which passes validation looks like this: ensemble/lang/ ensemble/lang/en/ ensemble/lang/en/filter_ensemble.php ensemble/pix/ ensemble/pix/icon.png The code that does all this in: admin/tool/installaddon/classes/validator.php And the area that needs to be fixed is in function: validate_language_pack ",3 +"MDL-42047","09/28/2013 16:59:24","Removing ""Custom instance name"" from Cohort enrollment when Cohorts no longer exist causes Coding error","When editing cohort sync enrollment in a course if the user removes the ""custom instance name"" for the instance and the cohorts that the instance points to no longer exist, this causes the following error on that course's enrollment methods screen: Notice: Trying to get property of non-object in /opt/rlcache/www/master/enrol/cohort/lib.php on line 49 Notice: Trying to get property of non-object in /opt/rlcache/www/master/enrol/cohort/lib.php on line 49 Coding error detected, it must be fixed by a programmer: Invalid context id specified context::instance_by_id() More information about this error Debug info: Error code: codingerror Stack trace: line 5221 of /lib/accesslib.php: coding_exception thrown line 49 of /enrol/cohort/lib.php: call to context::instance_by_id() line 165 of /enrol/instances.php: call to enrol_cohort_plugin->get_instance_name() This stops the user from being able to view/edit enrollment methods for a course and you have to re-add a name via database in order to get back to the enrollment methods screen for that course. To Replicate: Create a Cohort with members at system level Add a cohort sync enrollment method to a course and give it a Custom Instance Name and choose the cohort you just created. Now go back to Site Admin -> Users -> Cohorts and delete the cohort you created. Go to the course where you added the cohort sync and edit the enrollment method and remove the Custom Instance Name and save. I know this seems like a unique situation but I actually had this happen and had to really search for the answer as the error code does not really lead you to the ""name"" of the instance, as at first glance it leads you to believe it is a context issue. ",1 +"MDL-42054","09/29/2013 22:24:29","phpmailer unit test redirection is using incorrect test","see https://tracker.moodle.org/browse/MDL-41196?focusedCommentId=246970&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-246970 Yuliya Bozhko added a comment - 29/Sep/13 10:50 PM Looking through the comments history, I think in moodle_phpmailer.php it should check not redirected messages, but redirected emails... if (PHPUNIT_TEST && phpunit_util::is_redirecting_phpmailer()) { Otherwise, if I redirect emails only, my message sink is always empty. Discovered while trying to write tests for MDL-41956. ",2 +"MDL-42078","10/01/2013 09:17:37","Uninstalling multiple plugins usability and bugfixes","Suddenly some of my dev sites have started to show a lot of ""missing from disk"" plugins, mainly innocent ones (no DB...). That was integrated last week if I'm not wrong. What I'm finding annoying is that, if I click the ""uninstall"" button to get rid of any of them.... after confirmation and deletion... I'm redirected to admin/index.php, where the missing plugins are also show BUT WITHOUT uninstall option. So I've to go again to admin/plugins.php and continue with the next one. Just guessing if it would be possible any of this: - Add the uninstall option to admin/index.php, or - After uninstall, get redirected to the page that ignited the uninstall (admin/plugins.php). Ciao :-)",40 +"MDL-42079","10/01/2013 10:00:40","Repeating events in external calendar do not appear in Moodle Calendar","To reproduce: # Setup a publicly shared Google calendar # Add a single daily repeating event # Copy the ICAL link from the Calendar's Settings ""Calendar Address"" # Goto the calendar and ""Import Calendar..."" form # Select ""Calendar URL"" and paste the URL into # Sets as ""User Events"" # You get an ""Events Imported"" message saying 1 event imported. # Goto the calendar You should see a single event appearing on the *first* day but not on subsequent days",40 +"MDL-42081","10/01/2013 10:41:03","EditPDF: Add default stamp images","We need to add the new default stamp images done by barbara in MDL-41856 (they are in the zip file)",5 +"MDL-42082","10/01/2013 13:23:00","Password field appears as text plain in the external database auth plugin form","The external database auth plugin has fields to write the config to access to a external database. In other plugins and apps the password field use to be filled with asterisc or something, but not in this case. The password field should have the attribute type as password, and not as text.",2 +"MDL-42085","10/01/2013 16:59:35","Default Enrollment duration is not applied when manually enrolling a user if enrollment option is not expanded.","Issue: Enrollment duration is not applied when manually enrolling a user if enrollment option is not expanded. Steps to Replicate: -Go into a course -Course Admin>Enrollment Methods>Manual Enrollments>Settings -Set and Enable a Default Enrollment Duration -Go to Enrolled users -Enroll Users -Just enrol a user Result: No end date is applied to the user enrollment To get the user enrollment duration applied: -Go to Enrolled Users -Click the Enrollment Options arrow to drop that menu down -Make no changes to it (you will see the default is populated) -Enrol User -Finish Enrolling users -End Date is populated ",5 +"MDL-42091","10/02/2013 04:26:49","Fix the background color for atto buttons when clicked and hover","They should be: Hover: background-color: #ebebeb; background-image: radial-gradient(ellipse at center, #ffffff 60%,#dfdfdf 100%); Active: background-color: #dfdfdf; background-image: radial-gradient(ellipse at center, #ffffff 40%,#dfdfdf 100%);",2 +"MDL-42097","10/02/2013 07:39:41","can_change_password() set to false should not display the password form input during update","Enable web service authentication plugin Create a new user set to ws auth method Try to change the password => no error. However the password change didn't occur because can_change_password() is set to false. We should not display the password field if the authentication method doesn't support a change - or display a warning message. The administrator could be thinking he did change the password. This could be considered as security issue even thought it's going to be rare.",8 +"MDL-42098","10/02/2013 07:47:19","Debugging message only shown when alternate name fields are enabled.","If the alternate name fields are not used in Moodle then the debugging message saying that there are missing fields will not be displayed. The fullname function should be altered to show a debugging message regardless of whether the alternate fields are enabled or not.",8 +"MDL-42100","10/02/2013 08:27:39","Bad links in Capability overview report","_Steps to reproduce_ # Click Site Admin > Users > Permissions > Capability Overview # Select one or more capabilities # Select All roles # Click ""Get the overview"" # Click one of the role names in the table header. _What should happen_ Not sure, maybe the links should go to /admin/roles/allow.php?mode=override _What actually happens_ The link goes to admin/roles/override.php?contextid=1&roleid=1 Which gives this error: {noformat} Cannot override base role capabilities More information about this error Debug info: Error code: cannotoverridebaserole Stack trace: line 463 of /lib/setuplib.php: moodle_exception thrown line 86 of /admin/roles/override.php: call to print_error() {noformat}",2 +"MDL-42102","10/02/2013 09:25:04","Style TinyMCE toolbars consistently with Moodle style","Gray icons on gray background makes the icons look washed out. It would somehow improve the contrast by having white background instead. Please refer to MDL-41633 for the style",100 +"MDL-42110","10/02/2013 18:33:27","Installing add-ons causes 500 internal server error.","When installing add-ons using the functionality as described on http://docs.moodle.org/25/en/admin/tool/installaddon/index it is possible that when the files are copied from the 'moodledata' folder to the moodle installation folder the wrong permissions are used thus causing a 500 internal server error on a Unix / Linux operating system when the plugin is used. If a plugin is unzipped locally and FTP'd then the issue does not occur. After extensive investigation (and from other sources) on: https://moodle.org/mod/forum/discuss.php?d=238274. I have discovered that the folders are being copied with a '777' permission and the files '666' and that manually correcting this recursively for folders to '755' and files to '644' rectifies the issue. It might be that there is no actual code fix but rather improved instructions to set the permissions on the 'moodledata' folder as '755' for folders and '644' for files ensuring the owner and group are the same as the web server.",13 +"MDL-42111","10/02/2013 21:05:55","Youtube Repository Video Preview is Cut Off","When using ""Insert Moodle Media"" to add a Youtube video (from the Youtube repository) to an HTML editor, the preview of the video is cut off and displays only as a very narrow vertical strip. Please see the attached screenshot. Note: this seems to be a problem only in the Formal White, Boxie, and Brick themes. The following themes display the video preview correctly: Anomaly, Arialist, Binarius, FormFactor, Fusion, Leatherbound and Magazine. Steps to replicate: # Ensure YouTube repository is enabled on site. # Ensure the site theme (or course theme) is one of the affected themes. # Access the text editor in any course assignment, label, etc. # Click ""Insert Moodle Media"". # Click ""Find or upload a sound, video or applet..."" # Click on YouTube repository and search for literally any YouTube video. # Select the desired video; click ""Select this file"". # Review the video in the ""Insert Moodle Media"" box. # For the affected themes, the video will be cut off and not display the entire video thumbnail. Expected result: The full width of the video is viewable in the preview window. Actual result: The video preview shows only a very narrow vertical strip.",8 +"MDL-42117","10/03/2013 02:31:13","Drag and drop upload of resources breaks AJAX actions","# In a course, as a teacher with editing on.. # Drag and drop (file drag and drop) an image into a section and choose 'create a file resource' # Change the visibility to hidden # Attempt to do things with the resource just uploaded such as hide, move etc. Expected results: All actions work as normal. Actual result: The ajax breaks on those resources, the hidden icon isn't working and you can't move the resources.",13 +"MDL-42129","10/03/2013 08:41:38","Create mock up for the filemanager to match the new toolbar","Filemanager should look consitent with the new toolbar (Atto, EditPDF, TinyMCE) Please refer to MDL-41633 for styling details",2 +"MDL-42130","10/03/2013 08:48:52","Create mock up for the filepicker to match new toolbar","Filepicker should look consitent with the new toolbar (Atto, EditPDF, TinyMCE, Filemanager) Please refer to MDL-41633 for styling details",2 +"MDL-42131","10/03/2013 10:01:22","Edit PDF missing require_login on some pages.","ajax.php and testgs.php are missing require_login Also suggested by Petr: Use require - not require_once for config.php and thirdpartylibs.xml should be in the plugin - not in /lib ",1 +"MDL-42147","10/04/2013 04:12:15","Filepicker: aesthetic css issues on IE9","Standard and clean themes: * the picker content goes over the dialogue height. It's very subtle, look at the bottom of the dialog when changing repository. It's more obvious on clean. You can look on 2.4/2.5 for the good behavior, the full dialogue height is resized following the file picker content. Clean theme: * the header is blue * ""Upload a file"" and ""URL downloader"" icons are too big I also attached a screenshot of a css glitch on 2.4/2.5 about the top rounded corners. I initially took this screenshot to show how the file picker on 2.6 should look on IE9. It's not the object of this issue, so if it's not easily fixable on the go, you can write a different issue. ",13 +"MDL-42149","10/04/2013 06:45:58","Design new icons for filemanager/filepicker in svg/png format","Design new icons to make it consistent with the rest of the new svg icons",20 +"MDL-42150","10/04/2013 08:04:09","Edit PDF Ajax error saving pages.","Errors saving pages. {""error"":""Coding error detected, it must be fixed by a programmer: PHP catchable fatal error"",""stacktrace"":""* line 393 of \/lib\/setuplib.php: coding_exception thrown\n* line 294 of \/mod\/assign\/feedback\/editpdf\/classes\/page_editor.php: call to default_error_handler()\n* line 174 of \/mod\/assign\/feedback\/editpdf\/classes\/page_editor.php: call to assignfeedback_editpdf\\page_editor::add_annotation()\n* line 103 of \/mod\/assign\/feedback\/editpdf\/ajax.php: call to assignfeedback_editpdf\\page_editor::set_annotations()\n"",""debuginfo"":""Argument 1 passed to assignfeedback_editpdf\\page_editor::add_annotation() must be an instance of assignfeedback_editpdf\\annotation, instance of stdClass given, called in [dirroot]\/mod\/assign\/feedback\/editpdf\/classes\/page_editor.php on line 174 and defined\nError code: codingerror"",""reproductionlink"":""http:\/\/damyon.moodle.local\/im\/""}",1 +"MDL-42152","10/04/2013 09:39:33","import YUI 3.13.0","We have some nasty hacks in 3.12.0 at the moment, we should aim for 3.13.0 in 2.6 release...",5 +"MDL-42173","10/07/2013 03:55:24","Name fields notices on registration page.","While investigating MDL-42138, I noticed that registration page is generating notices as below:- {code} You need to update your sql to include additional name fields in the user object. line 3601 of /lib/moodlelib.php: call to debugging() line 65 of /login/signup_form.php: call to fullname() line 191 of /lib/formslib.php: call to login_signup_form->definition() line 312 of /lib/authlib.php: call to moodleform->moodleform() line 50 of /login/signup.php: call to auth_plugin_base->signup_form() {code} ",8 +"MDL-42195","10/08/2013 07:49:10","Bootstrap makes all images responsive with no way to disable this behaviour via CSS","After changing the dimensions of the image the image is still display with its original dimension. This prevents setting a width/height on images in Atto and TinyMCE, and has broken all sorts of images all over Moodle. Bootstrap 3 reverted this behaviour to make it opt-in - but we are stuck with Bootstrap 2. ",13 +"MDL-42199","10/08/2013 08:54:10","Random failures with test_increment_revision_number","In the CI servers we are getting random failures with test_increment_revision_number about some number not being incremented. As far as the main goal of that code is to guarantee revision numbers to be incremented… it sounds like something to investigate to be 100% in the safe side. Example: http://integration.moodle.org/job/20.%20Run%20phpunit%20UnitTests%20(master)/1793/testReport/junit/(root)/core_datalib_testcase/test_increment_revision_number/ Ciao :-)",2 +"MDL-42201","10/08/2013 12:40:27","Creating a course and running the cron causes 'Error' to be displayed in backup report.","It was discussed with Eloy that we would do the fix for MDL-37181, with the knowledge of this issue, and fix this here. The solution is to create a new status for the backups when they are first created to something like 'Waiting for first backup', rather than setting the status to the default (Error).",8 +"MDL-42206","10/08/2013 16:15:11","Don't trigger meta enrolment sync on course settings change","When you save course settings, each enrol instances plugin execute their own ""course_updated"" function. On our plateform, it creates huge loads, especially for ""enrol_meta_plugin"". We don't see why this function is executed because course settings page doesn't affect enrolments. Also, meta link [source code|http://git.moodle.org/gw?p=moodle.git;a=blob;f=enrol/meta/lib.php;h=67420870391130d540003ec612cc31ab5259b821;hb=HEAD#l120] got some comment about cohorts plugin. Maybe a wrong copy/paste ? ",2 +"MDL-42207","10/08/2013 17:16:33","fix message text formatting","the message formatting code is not ok, let's cleanup this area",8 +"MDL-42208","10/08/2013 17:46:43","use unmasking password field in auth plugin configs (master) and prevent saving of passwords","the problem is that auth config does not use forms yet, but I guess we can hack around it for now....",5 +"MDL-42212","10/08/2013 23:14:28","Lesson module is not browseable using the Server Files repository","When files are added to an activity, a folder is automatically created in Server files>>System>>course with the name of the activity and the type of activity. This folder contains all the files added to the activity. This doesn't happen when adding files to a Lesson activity. Steps to reproduce: Create a new course. Add a forum, database, quiz, and lesson activities. Add images to each activity using the HTML editor (I.E. Insert/edit a link, Insert/edit image). Upload file from your local computer using the file picker. Once all the activities are created and images have been added. Edit the forum description. Click on Insert/edit image>>Find or upload and image. Notice that the folder Lesson does not appear in Server files>>System>>course.",13 +"MDL-42214","10/09/2013 03:27:49","Blocking user before reading message causes constant popups","I think this MDL-18386 is back (well it happens for me on moodle.org anyway). ",8 +"MDL-42223","10/09/2013 10:52:15","Deprecate $CFG->cachejs in favour of reusing $CFG->debug","As a result of MDL-41985, this has been suggested to reduce the number of options relating to JS. We currently have: * $CFG->cachejs * $CFG->jsrev * $CFG->debug The proposal is to: * remove $CFG->cachejs; and * when $CFG->debug == DEBUG_DEVELOPER: ** set $CFG->jsrev = -1",13 +"MDL-42224","10/09/2013 11:13:55","clean up messaging and email redirection in unit tests","Problems: * use of $CFG->noemailever in unit tests * badges is abusing $CFG->noemailever - fatal moodle_url attachment error is hidden by that * we should give better warnings in tests about redirection of emails and messages * we should not rely on $CFG->noemailever for prevention of sending messages from unit tests",5 +"MDL-42225","10/09/2013 11:28:00","Badge recipients page warns about additional name fields missing","# Create a badge. # Award this badge to a user. # You will see the following issue on the page - {noformat} You need to update your sql to include additional name fields in the user object. line 3568 of /lib/moodlelib.php: call to debugging() line 802 of /badges/renderer.php: call to fullname() line 215 of /lib/outputrenderers.php: call to core_badges_renderer->render_badge_recipients() line 104 of /badges/recipients.php: call to plugin_renderer_base->render() {noformat}",5 +"MDL-42226","10/09/2013 11:48:18","Viewing an issued badge warns about additional name fields missing","# Create a badge. # Award this badge to a user. # On the next screen click on 'View issued badge' # You will see the following warning - {noformat} You need to update your sql to include additional name fields in the user object. line 3568 of /lib/moodlelib.php: call to debugging() line 319 of /badges/renderer.php: call to fullname() line 215 of /lib/outputrenderers.php: call to core_badges_renderer->render_issued_badge() line 64 of /badges/badge.php: call to plugin_renderer_base->render() {noformat}",5 +"MDL-42235","10/10/2013 03:09:19","Create outline on font colour and highlight icons for editors","When the font colour and highlight colour are grey, the icon itself can be lost, so a white outline of the icon would be helpful",8 +"MDL-42236","10/10/2013 03:41:15","Style the filemanager to match the new toolbar","Please refer to this issue MDL-42129 for the mock-up",20 +"MDL-42237","10/10/2013 03:42:38","Style the filepicker to match the new toolbar","Please refer to this issue MDL-42130 for the mockup",20 +"MDL-42239","10/10/2013 04:48:59","Calendar tooltips have bad aria-controls values","On a course with the calendar block added and some events added, the aria-controls value points to a non-existant ID. The chrome accessibility audit points out the severe nature of this.",5 +"MDL-42241","10/10/2013 05:37:23","The URL for the upload courses tool in site admin is wrong","I have a test site at http://localhost/moodle/int/master/ If I search for ""upload"" in the site admin search field I get a bunch of stuff back. For example ""upload users"" which points to http://localhost/moodle/int/master/admin/tool/uploaduser/index.php (which is correct). However, ""Upload courses"" points to http://localhost/admin/tool/uploadcourse/index.php which 404s. The URL should be http://localhost/moodle/int/master/admin/tool/uploadcourse/index.php",2 +"MDL-42243","10/10/2013 08:00:17","filter settings regressions","The problem is we should support settings.php in filters but at the same time keep BC for filtersettings.php",2 +"MDL-42269","10/10/2013 22:48:00","Review all new events introduced in 2.6dev","Events are not supposed to change between releases, we need to verify following: * event names are standardised * event structure is ok * there are tests for all events * events are trigger at the right places with correct parameters ",40 +"MDL-42276","10/11/2013 04:47:59","Automate groups CRUD actions (MDLQA-2335, MDLQA-2238, MDLQA-2105, MDLQA-1813, MDLQA-1812)","There are multiple MDLQA that checks those basic group features. We can wrap them all in a single feature. This issue should be backported to 2.5",20 +"MDL-42280","10/11/2013 04:54:27","Automate MDLQA-1546 and MDLQA-1545 - blocks management","Both features can be specified in a single blocks management feature file as they have parts in common and probably the initial context set up can be shared in a background section",8 +"MDL-42285","10/11/2013 05:19:18","Automate MDLQA-93 - A teacher can delete questions from the question bank","As described in MDLQA-93, a teacher can delete questions from the question bank",8 +"MDL-42292","10/11/2013 08:11:29","block.version regression in custom lang tool","Debug info: ERROR: column ""version"" does not exist LINE 1: SELECT version FROM mld998o_block WHERE name = $1 ^ SELECT version FROM mld998o_block WHERE name = $1 [array ( 0 => 'activity_modules', )] Error code: dmlreadexception Stack trace: line 442 of /lib/dml/moodle_database.php: dml_read_exception thrown line 239 of /lib/dml/pgsql_native_moodle_database.php: call to moodle_database->query_end() line 743 of /lib/dml/pgsql_native_moodle_database.php: call to pgsql_native_moodle_database->query_end() line 1431 of /lib/dml/moodle_database.php: call to pgsql_native_moodle_database->get_records_sql() line 1504 of /lib/dml/moodle_database.php: call to moodle_database->get_record_sql() line 1485 of /lib/dml/moodle_database.php: call to moodle_database->get_field_sql() line 1464 of /lib/dml/moodle_database.php: call to moodle_database->get_field_select() line 297 of /lib/adminlib.php: call to moodle_database->get_field() line 98 of /admin/tool/customlang/locallib.php: call to get_component_version() line 60 of /admin/tool/customlang/index.php: call to tool_customlang_utils::checkout() ",1 +"MDL-42293","10/11/2013 08:31:07","Behat upload step, should be able to determine proper location if ""admin/"" is present in the url.","Behat upload step, should be able to determine proper location if ""admin/"" is present in the url.",5 +"MDL-42317","10/14/2013 03:30:20","TinyMCE editor can overlap with Blocks on New Event Page in Calendar in Clean Theme","See attached screenshot. I thought this was a bug in Essential at first. TinyMCE is over too far to the right and usually overlaps with the blocks on the right. This can be avoided with a really wide browser window in Clean but not in Essential.",20 +"MDL-42330","10/14/2013 11:26:30","Automate MDLQA-5257 - An admin can award a site badge","As MDLQA-5257 described, an admin can award a site badge",3 +"MDL-42331","10/14/2013 11:28:00","Automate MDLQA-5258 - A teacher can add and allocate a course badge","As described in MDLQA-5258, a teacher can add and allocate a course badge",3 +"MDL-42332","10/14/2013 11:30:23","Automate MDLQA-5260 and MDLQA-5261 - A badge can be awarded based on activity and course completion.","As described in MDLQA-5060 and MDLQA-5261, a badge can be awarded based on activity and course completion. Both can be joined in the same feature file using scenarios and a background section",5 +"MDL-42339","10/15/2013 03:36:31","Remove double formatting set_title/set_heading over codebase","Both $PAGE->set_title() and $PAGE->set_heading() already process the contents passed with format_string(). So any call of this type: * $PAGE->set_title(format_string(… (there are 42 of this, at least) * $PAGE->set_heading(format_string(… (there are 25 of this, at least) Context in format_string() calls is only needed if it does not match current $PAGE->context OR if it has not been set. And any of these operations set it: * require_login() calls passing the 3rd, $cm parameter. * $PAGE->set_cm() calls. * $PAGE->set_context() explicit calls. This is about to search and destroy all those incorrect uses, looking to each carefully, ensuring that context is always set.",13 +"MDL-42340","10/15/2013 03:39:32","Long help texts overflow in help tooltips","# Goto a course > add new badge. # Make sure you are doing this from a local site, you should see a warning ""Your site is not accessible from the Internet, so any badges issued from this site cannot be verified by external backpack services."" with a help icon. # click on the help icon, the popup should render properly. screenshot: https://tracker.moodle.org/secure/attachment/35202/bonfire-screenshot-20131015-103324-979.png ",2 +"MDL-42342","10/15/2013 04:26:51","Alternate name warnings in quiz results block","I noticed this error from course/view.php page with quiz_results block displayed. {code} You need to update your sql to include additional name fields in the user object. line 3568 of /lib/moodlelib.php: call to debugging() line 407 of /blocks/quiz_results/block_quiz_results.php: call to fullname() line 296 of /blocks/moodleblock.class.php: call to block_quiz_results->get_content() line 238 of /blocks/moodleblock.class.php: call to block_base->formatted_contents() line 956 of /lib/blocklib.php: call to block_base->get_content_for_output() line 1008 of /lib/blocklib.php: call to block_manager->create_block_contents() line 361 of /lib/outputrenderers.php: call to block_manager->ensure_content_created() line 45 of /theme/clean/layout/columns3.php: call to core_renderer->standard_head_html() line 866 of /lib/outputrenderers.php: call to include() line 796 of /lib/outputrenderers.php: call to core_renderer->render_page_layout() line 244 of /course/view.php: call to core_renderer->header() {code} ",3 +"MDL-42356","10/15/2013 10:00:25","Edit PDF: When no stamps uploaded toolbar looks strange","There is a strange line on the right-hand side of the toolbar when you have not uploaded any stamps.",1 +"MDL-42360","10/15/2013 10:26:29","Edit PDF: On-screen layout does not match PDF layout","This is something that took me a very long time to get exactly right in the original plugin. See the attached screenshots for examples of errors in the layout. To summarise: * comment border style is different ('gray 2px curved corners' vs 'black 1px square corners') * lines are thicker on-screen than they are on the PDF * layout seems quite a bit out for most comments * on-screen comments are taller * on-screen font size is larger",13 +"MDL-42377","10/16/2013 04:08:36","Incorrect debugging message in backup.","In Backup XML transformer the debugging message is incorrect. It says ""Backup XML transformer should process arrays but plain content always"" when it should be ""Backup XML transformer should not process arrays but plain content only"".",2 +"MDL-42381","10/16/2013 07:56:23","remove unused OLE lib and pear excel leftovers","see MDL-42148",3 +"MDL-42386","10/16/2013 11:14:30","Etag verification for stored files never matching","Doing some innocent testing of MDL-38743 it was discovered that etag verification (and last-modified verification consequently) were no matching ever. See point B2 in that issue. This is about to fix the etag matching over all stable branches. It has a big impact in pages heavily using stored files (forum discussions… long books… long courses with labels…) I reviewed all the rest of etag uses in code base (js, css, yui combo…) and all them seemed to be using the /revision/ approach, so they are not affected. In any case I'd recommend to review all them again, just in case I missed anything.",2 +"MDL-42387","10/16/2013 11:20:26","Revisit CFG->filelifetime implementation and uses","Doing some innocent testing of MDL-38743 it was discovered that CFG->filelifetime is not used as often as desirable. See point B1 in that issue. This is about to consider how we could be using it better and apply that new approach everywhere. Perhaps it may have sense to move it to within the sendfile functions, so they continue accepting arbitrary lifetimes, but it CFG->filelifetime is set, it takes precedence. Or perhaps it only takes precedence if another settings says ""force""… or only smaller accepted if debugging is enabled… The trick here is to decide the behavior that should help both sites wanting to put a longer TTL and developers wanting to use small values for testing. While observing for it in as many places as possible (if set). That is it, ciao :-)",5 +"MDL-42390","10/16/2013 12:47:09","User name (first/last) not properly scrubbed","First and last name are not properly scrubbed during non-form input or display. This allows content, style, and javascript injections.",13 +"MDL-42392","10/16/2013 20:04:15","Block content doesn't show when the content was hidden and javascript is turned off","It is not possible to unhide a block when JavaScript is disabled. As a result, if a block is hidden (a per-user preference), then it cannot be unhidden if a user has since turned JavaScript off. We should either add a show button which reloads the page, or we should unhide the content when JS is disabled. I vote the latter as I think we should try and encourage users not to disable JavaScript.",3 +"MDL-42393","10/16/2013 20:08:13","Calendar events blinks","On the calendar month block, while hovering quickly on dates with events, tooltips are blinking from dateHovered1 to dateHovered2 and never stops. The moodle demo website has the exact same problem. Tested on multiple Firefox versions. Really a disaster on Firefox on Windows, but seems to work properly on my linux box. This is a really annoying bug that our customers keeps complaining about. Thanks in advance. ",13 +"MDL-42405","10/17/2013 06:17:18","EditPDF: when the PDF has a wrong format then a TCPPDF error is displayed in a blank page.","Previously a dialog was displayed when a PDF had a wrong format. Now it's a blank page. I attached a file with a bad format.",1 +"MDL-42414","10/17/2013 10:39:46","One more time() random failure: test_increment_revision_number","This is a follow-up of MDL-41935 that is already integrated and tested. A new random failure has been reported recently: {code} core_datalib_testcase::test_increment_revision_number Failed asserting that '1381999791' is equal to 1381999792 or is greater than 1381999792. /var/lib/jenkins/git_repositories/master/lib/tests/datalib_test.php:335 /var/lib/jenkins/git_repositories/master/lib/phpunit/classes/advanced_testcase.php:80 {code} This is about to fix those assertions by using the new assertTimeCurrent() or, at least, move the time() calls to early in the test, so random second jumps don't happen in the middle.",2 +"MDL-42421","10/18/2013 04:31:51","Remove incorrect statement in auth/upgrade.txt","In MDL-27953 the commit describing the new API was incorrectly altered and pulled into 2.4 and 2.5, but the API does not actually exist in those branches.",2 +"MDL-42428","10/18/2013 07:28:28","Update M.util.show_confirm_dialog() to use moodle-core-notification","After confirming it with [~dobedobedoh] the confirm dialogues in the rubrics form and quiz completion are not converted to moodle-dialogue",20 +"MDL-42429","10/18/2013 08:43:00","PHP notice regarding undefined property displayed when editing a lesson","# Add a lesson to a course. # Click to edit this lesson. # You will get a PHP notice ""Notice: Undefined property: stdClass::$version in /var/www/mstorage/sm/moodle/mod/lesson/mod_form.php on line 321"" displaying. It seems the global $module variable no longer stores the version. This check seems really unnecessary as we know the module version is not going to be less than what is stated. I am just removing it.",5 +"MDL-42433","10/18/2013 14:06:35","No longer able to annotate pdfs in 2.6 beta","Having upgraded my dev site to Moodle 2.6beta (Build: 20131018) I can no longer annotate pdfs because I do not see the Launch pdf link and can only download the pdf. I have also tried this on the QA Master site and cannot annotate pdfs either. I understand the checkbox for annotate pdf has been removed as it is 'always on' but when it was present, I was able to edit pdfs and now I cannot. Steps to reproduce: 1. Create an assignment with one file upload; 2. As a student, upload a pdf; 3. Log back in as the teacher and click on the assignment> View/Grade all submissions; 4. Click to grade the assignment. The pdf is there to be downloaded but there is no obvious way to annotate it directly.",3 +"MDL-42438","10/19/2013 19:13:14","new emulated simpleyui rollup does not load CSS for extra modules","we need to load all CSS for the following list specified in theme/yui_combo.php: // Some extras we use everywhere. 'escape', 'attribute-core', 'event-custom-complex', ...",5 +"MDL-42440","10/20/2013 08:49:01","Cannot enable most authentication plugins","Most authentication plugins in ""Manage authentication plugin"" page cannot be enabled. a) The ones that can be enabled have the url link: http://localhost/m/stable_master/admin/auth.php?sesskey=1zfgWfyF1c&action=enable&auth=email b) The ones that can not be enabled have the url link: http://localhost/m/stable_master/auth/test_settings.php?auth=db&sesskey=1zfgWfyF1c&action=enable&auth=imap If you paste a) and change the auth plugin name for the ones with the ""not working"" url then you can enable these plugins. The disable link is always formatted as a) and so always work.",1 +"MDL-42442","10/20/2013 16:57:25","eliminate standardwhite references in lib/setup.hp","// Ensure a valid theme is set. if (!isset($CFG->theme)) { $CFG->theme = 'standardwhite'; } ",1 +"MDL-42461","10/22/2013 05:14:40","Creating a wiki in group mode triggers setType warning","# Visit a course that has no groups. # Create a wiki and set 'Group mode' to 'Separate groups'. # View the wiki. # You will get the following notice - ""Did you remember to call setType() for 'groupinfo'? Defaulting to PARAM_RAW cleaning."" ",5 +"MDL-42465","10/22/2013 08:24:54","Beeping user in chat causes strict standard warning","# Visit /admin/settings.php?section=modsettingchat and set 'Chat method' to 'Normal method'. # Visit a course and create a chat activity. # View this activity and click to enter the chat. # Click on 'Beep' under your name. # You will see the message (obviously will vary depending on your site directory location) ""Strict Standards: Creating default object from empty value in /var/www/mstorage/i24/moodle/mod/chat/gui_header_js/users.php on line 42""",3 +"MDL-42467","10/22/2013 09:00:37","Deleted Database and Glossary entries in RSS Block","Deleted database entries are not removed from RSS feed. Probably glossary too (didn't check). Discovered while testing MDL-26170.",8 +"MDL-42481","10/22/2013 17:32:45","Clicking in text area fails to shift focus","* Add a Workshop to a course. (I expect that other activities with multiple text areas in the creation form will have the same problem.) * Add a name and description * Open the Assessment settings area of the form * Click in the text area for Instructions for assessment * Focus should shift to the Instructions text area, but it does not * Click a button in the editor toolbar, and focus will shift as expected",13 +"MDL-42493","10/23/2013 09:31:28","Upgrade to current 2.6beta, memory exhausted problem purging caches","Site performing this upgrade: 56cc9b3..34fb354 => 2.6dev July to current 2.6beta. Got this error: {code} PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 147 bytes) in /cache/stores/file/lib.php on line 545 PHP Stack trace: PHP 1. {main}() /admin/cli/upgrade.php:0 PHP 2. cache_helper::purge_all() /admin/cli/upgrade.php:164 PHP 3. cache_helper::purge_store() /cache/classes/helper.php:439 PHP 4. cachestore_file->purge() /cache/classes/helper.php:475 PHP 5. glob() /cache/stores/file/lib.php:545 {code} It seems that, under some circumstances, if there are many cached items… purging requires a lot of memory. Consider increasing it for all executions, not only for upgrade ones. Alternatively, perform the purging after increasing memory for upgrade. I think the former is better in general, covering any purge. Ciao :-)",2 +"MDL-42496","10/23/2013 11:08:33","backport MDL-41245 add-on installer redirection fix from master","This should finally resolve the problem when installing missing dependencies...",5 +"MDL-42497","10/23/2013 11:37:43","orphaned subplugins are missing on the plugins overview page","we should probably add a new pluginfo for sub-plugins that were installed via missing plugin",8 +"MDL-42512","10/24/2013 06:29:14","Missing filters are displayed in the filters administration","While testing MDL-37813, I discovered that missing plugins were still displayed on the list. I could even enable/disable the missing plugin, but the uninstall link didn't work. The missing plugin was _filter_tags_: https://moodle.org/plugins/view.php?plugin=filter_tabs",5 +"MDL-42525","10/24/2013 18:17:23","improve perf of core_plugin_manager::get_plugin_info()","we do not need to load everything, we can load just one plugin type there...",3 +"MDL-42541","10/25/2013 07:51:24","Refactor portfolio queue system to prevent usage of events_trigger()","The portfolio queue system is using the old events_trigger in order to register a cron job. We have to refactor the code to get rid of the usage of events_trigger().",20 +"MDL-42547","10/25/2013 16:28:36","Bulk users upload: values are not trimmed in CSV file when bulk uploading users","Bulk upload csv file with users whole emails for some reason not clean and contain space at the end or beginning will be recorded in Moodle as it is, resulting in impossibility to send email to user. The best approach would be to strip beginning/end spaces for email (and potentially other fields).",8 +"MDL-42553","10/27/2013 04:05:35","It is not possible to uninstall calendar types","# Install a calendar type (eg. https://github.com/markn86/moodle-calendartype_test) # Go to the /admin/plugins.php and notice you can not uninstall the calendar type.",5 +"MDL-42575","10/28/2013 09:49:09","Revert heading option display for page resource","As discussed in https://tracker.moodle.org/browse/MDL-41797?focusedCommentId=250232&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-250232 We are putting back the heading display option for page resource. ",8 +"MDL-42585","10/28/2013 23:55:01","Refine capabilities that permit user to see assignments and the user feedbacks without ability to grade","We often get a request to provide customized tutor role that would be capable of viewing assignments and user feedback to those assignments within a course without being able to grade the users. We would like a new capability added to the assignment module and integrated in the code in such way to separate ability to view the assignments and feedbacks without being able to grade. New capability could be called mod/assign:viewfeedback and it would affect these methods (among some others): mod/assign/locallib.php assign::can_view_group_submission assign::can_view_submission ",20 +"MDL-42588","10/29/2013 03:10:07","Add option to Scorm setting to display or hide activity name","From the discussion on MDL-41797, we are allowing to have option to display or hide the activity name. Currently, there's no option to do this in Scorm. This option could be used to prevent duplication of heading display on the page as mentioned in discussion also occurs in https://moodle.org/mod/forum/discuss.php?d=242457. A draw back for implementing this is the possibility of losing the page hierarchy level for heading. Some user with screen reader or assistive technology use these header levels as page structure to navigate the web page. I also created a forum discussion to get feedback from the community https://moodle.org/mod/forum/discuss.php?d=244295. ",5 +"MDL-42597","10/29/2013 13:37:34","New maintenance mode countdown counts down to 0 instead of 1","If I enable the new maintenance mode countdown with sudo -u apache php admin/cli/maintenance.php --enablelater=2 there is a countdown messagebox at the top of every Moodle page until the maintenance mode is enabled. Unfortunately, the message in this message box counts down to 0 instead of 1, so in the last minute before maintenance mode activation, there is a rather confusing message saying ""Site is switching to maintenance mode in 0 minutes"". I would like to propose to add 1 to the minutes in lib/outputrenderers.php, function maintenance_warning(), to solve this cosmetic issue.",13 +"MDL-42612","10/30/2013 08:40:38","add Russian Ruble to list of paypal currencies","Russian Ruble - RUB ",1 +"MDL-42682","11/04/2013 03:23:06","Fix display alignment and content for forum discussion in Clean theme","With mobile device, the width of discussion list is wider than the screen. On discussion page, display options and moving discussion options should have left alignment instead of right alignment. *Attaching screenshots. ",3 +"MDL-42748","11/06/2013 17:28:12","Help dialogue no longer handles long help texts","I noticed this working on MDL-42743. If the contents of a help dialogue gets too long, the content is just truncated. Presumably there should be a scroll-bar or something?",3 +"MDL-42752","11/07/2013 00:33:34","Disabled icons on file picker still get focus resulting in them being read out by screen readers","When tabbing through the icons on the filepicker, you can focus on ones that are disabled. This results in a screen reader reading them out to the user, even though it shouldn't. As an additional part of this issue, it would be good to look at the alt/title attribute pairing of the icons, and see if there is a way to improve this. Also, the strings used for the tooltips should be escaped using y.html.escape",20 +"MDL-42767","11/07/2013 16:44:29","Notes for deleted courses causes error","When a note is added for a user at the course level on the user's notes page and then that course is deleted, an error results on the note's page that the deleted course can not be found. Steps to replicate -> Enable user notes on your site. Browse your list of users for a user that is enrolled in a class. In the navigation menu, under users, choose Notes. Under one of the courses, choose ""Add a new note"". Add a note, leaving it at the course context and save. Delete the course you added the note for. Go back to the user's note page: Can not find data record in database table course. More information about this error Debug info: SELECT * FROM {course} WHERE id = ? [array ( 0 => 42, )] Error code: invalidrecord Stack trace: line 1372 of /lib/dml/moodle_database.php: dml_missing_record_exception thrown line 1348 of /lib/dml/moodle_database.php: call to moodle_database->get_record_select() line 42 of /notes/index.php: call to moodle_database->get_record() ",13 +"MDL-42797","11/11/2013 01:59:05","Guest access displays exception error right after upgrade process","This is a trivial error that should impact a very low amount of people: # From a 2.5 install # Login as admin # Set up the admin user profile if not done already # LOGOUT # Upgrade to 2.6 from the web # Do not connect as admin but as guest. => failed, as soon as I click on the guest button I see the attached errors. Once I connected as admin and finish to validate the upgrade settings, the guest access is back working. ",2 +"MDL-42801","11/11/2013 05:24:23","Drag and drop upload of resources doesn't add action icons correctly.","Steps to reproduce: # Go to course and turn editing on # Drag and drop a file # Move and editing icons are not displayed # Action menu is added on next line and menu width is less, so text overflow.",5 +"MDL-42834","11/12/2013 07:34:15","Deprecate loginhttps","In my opinion, it's about time we deprecated and removed the loginhttps config setting and sealed this potential leak. It was removed from Mahara over three years ago (https://bugs.launchpad.net/mahara/+bug/646713) for two primary reasons: * it broke AJAX login; and * there can be times where an http link is present on an https page. In Moodle we don't have AJAX login, and we have mitigated against the https -> http issue by always setting the wwwroot to the current schema. However, it would be really super nice if we *could* have AJAX login, and I don't feel that the reasons which once prevented forced use of HTTPS throughout a site are as strong as they used to be. Hardware performance is far better than it was five years ago; it's been [proven how easy it is to steal sessions from non-ssl|http://en.wikipedia.org/wiki/Firesheep] so these things are no longer theoretical or even hard; and SSL is far more widespread. As it is, we already load all additional content (e.g. CSS, JS, image) over SSL so it's now just the actual page content which is not. We no longer have issues with third-party plugins not supporting SSL (e.g. YouTube, Vimeo, etc). I'd like to propose that we drop support for loginhttps. (more documentation changes: http://docs.moodle.org/27/en/Apache)",40 +"MDL-42882","11/13/2013 21:14:25","Performance improvement to missing root directory upgrade step","In the update process for version 2013051402.10 there is a fix for missing root folder entries. (File: lib/db/upgrade.php line 2216) To find the fileareas where these entries are missing a left join is used. We have some installations with really large files table (more then 600 MB). On these installations the update fails at this point. Here is my attempt to get this work. Maybe it helps other people with the same problem. {code} if ($oldversion < 2013051402.10) { $sql = ""SELECT distinct f1.contextid, f1.component, f1.filearea, f1.itemid FROM {files} f1 WHERE f1.component <> 'user' or f1.filearea <> 'draft'""; $rs = $DB->get_recordset_sql($sql); $defaults = array('filepath' => '/', 'filename' => '.', 'userid' => $USER->id, 'filesize' => 0, 'timecreated' => time(), 'timemodified' => time(), 'contenthash' => sha1('')); foreach ($rs as $r) { // Is there a root folder entry for that filearea? $count = $DB->count_records('files', array( 'contextid' => $r->contextid, 'component' => $r->component, 'filearea' => $r->filearea, 'itemid' => $r->itemid, 'filename' => '.', 'filepath' => '/' )); if ($count) { continue; } // There is no root folder entry for that filearea. $pathhash = sha1(""/$r->contextid/$r->component/$r->filearea/$r->itemid"".'/.'); $DB->insert_record('files', (array)$r + $defaults + array('pathnamehash' => $pathhash)); } $rs->close(); // Main savepoint reached. upgrade_main_savepoint(true, 2013051402.10); } {code}",20 +"MDL-42884","11/13/2013 23:42:57","Can not delete users with invalid emails","The given username contains invalid characters More information about this error Debug info: Error code: invalidusername Stack trace: line 113 of /user/lib.php: moodle_exception thrown line 4213 of /lib/moodlelib.php: call to user_update_user() line 84 of /admin/user.php: call to delete_user()",5 +"MDL-42885","11/14/2013 01:49:28","Updating existing users via bulk upload causes debugging messages","h5. In master. {noformat} Could not find htmleditor on the user objects line 554 of /admin/tool/uploaduser/index.php: call to debugging() Could not find oldusername on the user objects line 554 of /admin/tool/uploaduser/index.php: call to debugging() Could not find deleted on the user objects line 554 of /admin/tool/uploaduser/index.php: call to debugging() Could not find firstnamephonetic on the user objects line 554 of /admin/tool/uploaduser/index.php: call to debugging() Could not find lastnamephonetic on the user objects line 554 of /admin/tool/uploaduser/index.php: call to debugging() Could not find middlename on the user objects line 554 of /admin/tool/uploaduser/index.php: call to debugging() Could not find alternatename on the user objects line 554 of /admin/tool/uploaduser/index.php: call to debugging() {noformat} h5. In 2.5 {noformat} Could not find oldusername on the user objects line 551 of /admin/tool/uploaduser/index.php: call to debugging() Could not find deleted on the user objects line 551 of /admin/tool/uploaduser/index.php: call to debugging() {noformat} ",8 +"MDL-42889","11/14/2013 06:50:45","Remove access to old log table in admin/handlevirus.php and other clam related code","Currently this library uses the legacy logging table. It needs to be upgraded to use the new logging API.",2 +"MDL-42890","11/14/2013 06:50:48","Reimplement access to log table in backup/util/helper/backup_cron_helper.class.php","Currently this class uses the legacy logging table. It needs to be upgraded to use the new logging API.",13 +"MDL-42891","11/14/2013 06:50:52","Reimplement access to log table in functions notify_login_failures() and count_login_failures()","Currently these functions uses the legacy logging table. It needs to be upgraded to use the new logging API.",20 +"MDL-42892","11/14/2013 06:51:16","Reimplement access to log table in function can_delete_course()","Currently this function uses the legacy logging table. It needs to be upgraded to use the new logging API.",20 +"MDL-42894","11/14/2013 07:21:58","Investigating performance of the new logging API in practice","Once the new logging API is in place, its performance and impact need to be measured. Actions to reduce the impact of the new logging system should be investigated.",20 +"MDL-42896","11/14/2013 07:38:30","Grade update event","Multiple activities make updates to the grading table, there should be a generic event, or a class or something we can use for these situations instead of creating multiple events that do the same thing. See MDL-40054 on why this is needed.",20 +"MDL-42898","11/14/2013 07:42:47","Develop a timeline page/block","With the new logging and events system in place, it will be possible to implement a ''Timeline'' page/block so each user to see a stream of activity that is relevant to them individually. The target of this information could be used on the My Home page.",100 +"MDL-42904","11/14/2013 11:46:36","Self enrolment by group key does not work - until group settings are saved again","We have a customer running on Moodle 2.5.2. They are setting up courses using group enrolment keys. I have checked their configuration and it seems correct. If a user attempts to self-enrol on one of these courses, using the correct group key, the receive the error ""Incorrect enrolment key, please try again"". But the key *is* correct. I have tested this myself. The weird thing is that if you go into the groups page, select the relevant group and choose ""edit group settings"", then press save (without changing anything at all) then the user can self-enrol. It is as if the group key details have not been properly saved the first time they were set up...although the key has certainly been saved, as you can click the ""unmask"" checkbox, and the correct key is displayed. The customer can't go through the whole site, hundreds of courses, editing and clicking save on every group in every course. I cannot find anything wrong with the site configuration, the self-enrolment plugin configuration, or the group configuration. It seems to me that this is a bug, although I'd be happy to be proved wrong as long as an explanation of this behaviour is forthcoming. I'd appreciate someone taking a look at this as a matter of urgency - I can arrange access to the site and server if required.",8 +"MDL-42909","11/14/2013 16:59:09","Move (non-JS): title attribute is on wrong tag","When you are moving items (using the non-AJAX version), the move targets are written out using code like the following: {code}
  • {code} As you can see, there is a title attribute on the LI tag which does not make a lot of sense. It should be on the link tag. (Additionally, there is an unnecessary title attribute on the img tag.) This was caused by MDL-37085. The previous code was: {code} {code} This code is correct, with a title attribute on the A tag containing the full text, and an alt attribute (no title) on the IMG tag. For accessibility reasons, none of these titles are suitable anyway. All links should have different texts so while the longer text includes the name of the item being moved, that doesn't actually help as it's still the same for all of them. An accessible solution would use text like: 'Move item to Week 4 before ""Study resources""' In other words, I didn't describe the item being moved (because they probably know, and it's the same for all of them) but I included the section name of the target location and a relative before/after for the position within that section. I am not sure whether or not it is worth doing anything about this because I know Moodle HQ is planning to stop supporting the non-JS graceful degradation features. I was thinking about fixing the regression and putting it back to have the right attribute on the right tag, but since it's inaccessible even after doing that (and always was), I don't think I am going to bother... So probably just filing this bug and leave it for Moodle staff to decide what to do, sorry! The offending code where it puts the title on the li is course/renderer.php in course_section_cm_list, currently line 1097/1106, btw. ",5 +"MDL-42924","11/15/2013 14:14:51","use normalize_component to extract plugin name and type","file: moodle \ lib \ upgradelib.php function: function upgrade_plugin_mnet_functions ($ component) line: list ($ type, $ plugin) = explode ('_', $ component); If a plugin or block, etc. have a two-membered name eg ""block_my_courses"" the variable $plugin substituted is set to 'my' and should be 'my_courses' Should look like: list ($ type, $ plugin) = normalize_component ($ component);",5 +"MDL-42928","11/16/2013 00:52:24","Reimplement scroll locking for full-screen dialogues","IMO, this is a serious usability issue as many of our dialogues contain scrollable content. When these are open and you attempt to scroll, you'll find that the page scrolls too. Whilst this isn't a major issue for desktop computers, those using trackpads (predominantly laptops), and those with touch screens (predominantly tablets) who swipe to get down the list will find that the whole page starts to move once the bottom (or top) of the list is reached. In the case of the Activity Chooser, this is a serious regression. This patch re-introduces scroll locking but using a different method. Rather than removing the scrollbars, we instead set the scrollTop and scrollLeft to the positions they were in when the dialogue was opened. We do this on every scroll event. When the dialogue is closed, we stop forcing the scroll and release control back to the user.",100 +"MDL-42931","11/16/2013 19:04:51","Decide Moodle 2.7 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\.3\.3' * | grep '\.php' (and look for MDL-39007 status, about to unify all those duplicated checks) Ciao :-)",13 +"MDL-42934","11/16/2013 23:22:51","Self registration does not use site language setting","# Visit /admin/tool/langimport/index.php and install a new language pack. # Visit /admin/settings.php?section=langsettings and set the 'Default language' to the one you installed. # Visit /admin/settings.php?section=manageauths and set 'Self registration' to 'Email-based self-registration'. # Register as a new user on your site. # Log in using that user and notice that the user setting 'lang' is set to 'English' (which is the database default), rather than the site language setting.",5 +"MDL-42956","11/18/2013 23:47:49","mnet broken for mssql and oracle","While looking for other recent problems it was detected that mnet auth is using a harcoded LIMIT clause. That automatically means both mssql/sqlsrv/oracle are crashing there: https://github.com/moodle/moodle/blob/master/auth/mnet/auth.php#L779 It's there since ages ago, so needs fixing in all supported versions. Ciao :-)",13 +"MDL-42962","11/19/2013 05:29:10","create a course_module_viewed abstract class","We need an abstract class for all those course_module_viewed events",8 +"MDL-42973","11/19/2013 19:15:32","Unknown component location","When I login into Moodle with admin, they go directly to /moodle/admin/index.php And I have an error/debug/codingerrorerror: Coding error detected, it must be fixed by a programmer: Unknown component location I upgraded from 2.5 to 2.6 with no problem. When I go to update plugins, I had a cURL error. I copied the moodleorgca.crt in moodledata. Then, error of Unknown component is the only taht I can see. This error appears even with a clean install of moodle 2.6, and deleting cache and sessions.",40 +"MDL-42980","11/20/2013 06:30:21","Clean: Activity chooser's Add/cancel button on iPhone4S does not respond","On iPhone4S iOS7 Safari, the add/cancel button does not respond when its at the bottom most. Barely usuable. !photo_0.jpg! Instead the iOS bottom navigation bar appears !photo_1.jpg! But after a couple of random tries forcing the the activity chooser to scroll up then it works !photo_2.jpg! It works fine on Chrome",8 +"MDL-42993","11/20/2013 15:52:57","Username with spaces no longer valid for LDAP authenticated users","Using LDAP authentication tied into AD users with spaces in their network logon (sAMAccountName) receive 'The given username contains invalid characters' message when trying to log in to Moodle for the first time. This configuration worked previously on 2.5 The difference between 2.5 and 2.6 is in lib/moodlelib.php::create_user_record($username, $password, $auth = 'manual') and it used do a database insert for the user record. It now calls the function user_create_user which includes validation. To allow the extended user name set you now need to set the following in your Moodle config.php. {code} $CFG->extendedusernamechars = true{code} ",13 +"MDL-42995","11/20/2013 21:06:28","Restored course has broken links in assignment description when viewed from calendar event","When an assignment description contains an embedded file or a link to a file and that assignment appears in the Calendar block (because it has a due date), the embedded file or link to a file breaks when that course is backed up and restored to a new course. Steps to reproduce: # Create a course. # Add an assignment, add a file (e.g., an image) to the description or create a link in the description to an existing resource (e.g., PDF document), and set a due date for the assignment. # Add the Calendar block to the course. # Backup the course and restore it elsewhere on the site (be sure to include user data). # Enroll a user into the restored-to course. # As the enrolled user, load the assignment in the restored course. The embedded file or the link work. # Still as the enrolled user, go back to the course page and use the Calendar block to click on the due date and then the assignment link. # The embedded image or the link in the assignment description here is broken. Expected result: The files in the description should not be broken. Since the assignment description on the assignment page is correct, the calendar page should also be correct. Actual result: The assignment page is correct but the calendar page has broken links.",8 +"MDL-43010","11/21/2013 10:50:05","Create expand/collapse in the X steps for behat","Create expand/collapse in the X steps for behat I wrote these steps to use in one of my behat tests, but later decided that I don't need them. Submitting here so someone else can benefit from these.",5 +"MDL-43028","11/22/2013 05:16:28","Site admin navigation is not expanding on few pages","While viewing ""Default My home page"" navigation is not expanded and breadcrumbs are not displayed.",8 +"MDL-43037","11/23/2013 22:43:33","Quiz user overrides generates alternate names debugging message","You need to update your sql to include additional name fields in the user object. line 3580 of /lib/moodlelib.php: call to debugging() line 163 of /mod/quiz/override_form.php: call to fullname() line 191 of /lib/formslib.php: call to quiz_override_form->definition() line 76 of /mod/quiz/override_form.php: call to moodleform->moodleform() line 115 of /mod/quiz/overrideedit.php: call to quiz_override_form->__construct()",5 +"MDL-43044","11/25/2013 02:59:20","The course_module_instances_list_viewed abstract class could be improved to do more.","See MDL-42962.",13 +"MDL-43058","11/25/2013 20:19:38","report_security_check_riskxss reports additional name fields in the user object.","The report_security_check_riskxss reports : You need to update your sql to include additional name fields in the user object. line 3580 of /lib/moodlelib.php: call to debugging() line 513 of /report/security/locallib.php: call to fullname() line 74 of /report/security/index.php: call to report_security_check_riskxss() Fix: {code:title=/report/security/locallib.php} if ($detailed) { --$users = $DB->get_records_sql(""SELECT DISTINCT u.id, u.firstname, u.lastname, u.picture, u.imagealt $sqlfrom"", $params); ++$userfields = user_picture::fields('u'); ++$users = $DB->get_records_sql(""SELECT DISTINCT $userfields $sqlfrom"", $params); {code} ",3 +"MDL-43062","11/26/2013 02:52:12","Content of label is left-aligned, regardless of alignment chosen ","When you center or right-align text or images in a label, it appears correctly in the editor, but is always left-aligned when displayed on the course page. Prior to upgrading to 2.6, in 2.4, I used to be able to have content appearing in the center or right of the course page.",8 +"MDL-43063","11/26/2013 03:51:50","Function download_file_content() inline documentation of return value incorrect","The inline docs for function download_file_content() in lib/filelib.php states: ""@return mixed ... content of the file as string if ok"" Actually it returns a the response as a stdClass object if ok containing the properties {status, headers, response_code, results, error}",3 +"MDL-43106","11/28/2013 04:29:25","Moodle 2.6 sends 2 Set-Cookie headers","It appears that since upgrading to 2.6, Moodle is sending 2 set-cookie headers with different values. While usually setting multiple cookies with the same name would result in them being overwritten, there may be other issues caused by the bug. It's also creating more work for Moodle in terms of processing, database activity, etc, and should be resolved. An example of this is as follows (requesting directly from Moodle.org, bypassing all proxies): < HTTP/1.1 200 OK < Date: Thu, 28 Nov 2013 04:27:15 GMT < Server: Apache < Vary: Front-End-Https,Accept-Encoding,User-Agent < Set-Cookie: MoodleSession=uv7qph9jtem8rsi6d790j7p3l4; path=/; secure < Expires: Mon, 20 Aug 1969 09:23:00 GMT < Cache-Control: no-store, no-cache, must-revalidate < Pragma: no-cache < Set-Cookie: MoodleSession=ogn0cv0atsfr9i27gtvc0bkkg7; path=/; secure < Content-Language: en < Content-Script-Type: text/javascript < Content-Style-Type: text/css < X-UA-Compatible: IE=edge < Cache-Control: post-check=0, pre-check=0 < Last-Modified: Thu, 28 Nov 2013 04:27:15 GMT < Accept-Ranges: none < X-Frame-Options: sameorigin < Transfer-Encoding: chunked < Content-Type: text/html; charset=utf-8 This has been reproduced on all 2.6 sites, in addition to local copies.",3 +"MDL-43117","11/28/2013 14:29:35","Add release column to Plugins Overview page","It would be beneficial to be able to see the release info (not just the version number) of a plugin on the overview page. I realize that most of the core Moodle plugins do not have release info in their version.php file, but most 3rd-party plugins do. I have provided possible solution code at the indicated github repository and branch for Moodle 2.6.",2 +"MDL-43137","11/29/2013 15:22:20","class loader breaks open_basedir","Looking at lib/classes/component.php the function load_classes() makes a quick check that the $fulldir parameter is valid by calling is_dir($fulldir). Unfortunately, this breaks if open_basedir is enabled as it is checking paths like /classes which will trigger the open_basedir restriction and cause Moodle to fail. Would it not be better to do a comparison with $CFG->dirroot to see if $fulldir looks like a valid, absolute path? More details in https://moodle.org/mod/forum/discuss.php?d=244818.",2 +"MDL-43140","11/29/2013 21:25:05","When submitting the form on the mnet access control page a warning is shown","# Visit /admin/mnet/access_control.php # Put any username in the form, choose 'All hosts' and set to 'Allow' and submit # You will see the following - {noformat} You should really redirect before you start page output line 741 of /lib/outputrenderers.php: call to debugging() line 2557 of /lib/weblib.php: call to core_renderer->redirect_message() line 110 of /admin/mnet/access_control.php: call to redirect() {noformat}",2 +"MDL-43142","11/29/2013 22:01:52","No username variable passed to mnet access control string","# Visit /admin/mnet/access_control.php # Enter any username in the form, select 'All hosts' as the 'Remote hosts' and 'Deny' for the 'Access control'. # On the next page click on the link 'Allow' next to 'Deny' for that user. # Notice the missing variable on the next screen - ""SSO ACL: Allow user {$a->user} from All Hosts""",3 +"MDL-43171","12/03/2013 05:53:21","Cleanup and fixup of the events/logging docs","While looking at the Events doc, I noticed some inconsistencies. For example:- http://docs.moodle.org/dev/Event_2#Events_naming_convention http://docs.moodle.org/dev/Event_2#Why_separate_classes.3F The pattern of names for new names of the events seems wrong. The relationship column doesn't make any sense imo and also now since we have those new events, we should provide an exact mapping. On detail evaluation am sure, many other inconsistencies would be found. We need to revalute this doc and fixup any incorrect data. ",20 +"MDL-43175","12/03/2013 09:49:24","Base event JSON encoding decoding check will fail with whole float values.","Checks are done to ensure that the 'other' event field does not contain an object. If the 'other' field contains a float which is a whole number (e.g. 90) then the encoding / decoding will result in the number being returned as an integer. When the comparison is done it will fail. Solution: The comparison does not have to be so strict to catch if objects are being passed. '!=' will suffice. @see lib/classes/event/base.php line 447 ",5 +"MDL-43178","12/03/2013 12:38:18","Incorrect confirmation message appears on ""per-forum digest option"" screen","Introduced in 2.6, you are now able to manage the digest options for different forums within a course (accessed via http://YOURMOODLESITE/mod/forum/index.php?id=2, where id is the course ID. On changing the digest setting for a forum, a message is briefly displayed detailing the change you have made; this message, however, is not always correct. The message is correct when selecting ""Default (no digest)"", however the other three choices will always display a message stating that you have changed your choice to ""Complete Posts"".",5 +"MDL-43188","12/04/2013 04:53:15","Backport missing beep to 2.5 and 2.4","This bug is to backport the 2.6 fixes made in MDL-37962 to 2.5 and 2.4",5 +"MDL-43196","12/04/2013 10:18:10","After upgrading to 2.6 my email-based-self-registration serves up an error when I click on 'Create New User' on the front page","I use email based self registration for users to register on my site. When I click on 'Create New User' on the front page, it shows up an error 'Invalid User'. I had upgraded the site from 2.5 where everything worked great. *Replication steps:* # Navigate to Site admin > Users > Accounts > User profile fields # Click ""Create a new profile field:"" and select ""Text area"" # Set ""Display on signup page?"" to ""Yes"" # Navigate to Site admin > Plugins > Authentication > Manage authentication # Ensure ""Email-based self-registration"" is enabled (default) # Enable "" Self registration"" (registerauth) # Open a new browser for the student # Click the ""Log in"" link in top-right corner # Click ""Create a new account"" _Expected behaviour:_ Registering a new account with user profile fields should be possible. _Actual result:_ The following error is shown. {noformat} Invalid user More information about this error Debug info: SELECT id FROM {user} WHERE id = ? AND deleted = ? [array ( 0 => 0, 1 => 0, )] Error code: invaliduser Stack trace: line 1390 of \lib\dml\moodle_database.php: dml_missing_record_exception thrown line 1366 of \lib\dml\moodle_database.php: call to moodle_database->get_record_select() line 6357 of \lib\accesslib.php: call to moodle_database->get_record() line 44 of \lib\editor\tinymce\plugins\managefiles\lib.php: call to context_user::instance() line 443 of \lib\editor\tinymce\classes\plugin.php: call to tinymce_managefiles->update_init_params() line 192 of \lib\editor\tinymce\lib.php: call to editor_tinymce_plugin::all_update_init_params() line 87 of \lib\editor\tinymce\lib.php: call to tinymce_texteditor->get_init_params() line 361 of \lib\form\editor.php: call to tinymce_texteditor->use_editor() line 183 of \lib\pear\HTML\QuickForm\Renderer\Tableless.php: call to MoodleQuickForm_editor->toHtml() line 2781 of \lib\formslib.php: call to HTML_QuickForm_Renderer_Tableless->renderElement() line 403 of \lib\pear\HTML\QuickForm\element.php: call to MoodleQuickForm_Renderer->renderElement() line 1632 of \lib\pear\HTML\QuickForm.php: call to HTML_QuickForm_element->accept() line 1702 of \lib\formslib.php: call to HTML_QuickForm->accept() line 1675 of \lib\pear\HTML\QuickForm.php: call to MoodleQuickForm->accept() line 435 of \lib\pear\HTML\Common.php: call to HTML_QuickForm->toHtml() line 204 of \lib\pear\HTML\QuickForm\DHTMLRulesTableless.php: call to HTML_Common->display() line 929 of \lib\formslib.php: call to HTML_QuickForm_DHTMLRulesTableless->display() line 88 of \login\signup.php: call to moodleform->display() {noformat} The rest of the site works great - this is the only error.",2 +"MDL-43197","12/04/2013 10:56:26","Parent role only sees course total and no longer individual grades","In 2.5 and 2.6 it appears the parent role can only see the course total of their child when viewing their user report, whereas previously they could see each individual grade in a course. Has a capability changed? Steps to reproduce: (Rather long unfortunately) 1. As a teacher, create two assignments in a course and then grade them for a specific student. 2. Verify you can see both grades separately for the student. 3. Create the parent role as in http://docs.moodle.org/26/en/Parent_role 4. Add a user to the student you graded as a parent and add the mentees block to the front page. 5. Log in as the parent; click the name of the student in the mentees block. 6. From the student's profile,click the name of the course where the 2 assignments are. 7. In Administration>Profile settings for (student name) click Activity reports and then Grade. 8. The course total of both assignments is shown but not each individual assignment.",20 +"MDL-43213","12/05/2013 02:17:08","behat config settings and init code can be simplified","While testing behat settings recently I was confused by the settings and later even more when looking at the code itself. Here is my attempt to simplify all this: 1/ always require 3 behat settings - $CFG->behat_wwwroot, $CFG->behat_dataroot and $CFG->behat_prefix 2/ cleanup script init code 3/ do not require $CFG->wwwroot and $CFG->dataroot on test sites 4/ remove switch completely - the most confusing part for me 5/ print out behat_wwwwroot in init script so that you can test the test site manually ",8 +"MDL-43215","12/05/2013 04:37:11","Adding web service token generates alternate names debugging message ","# Visit /admin/settings.php?section=webservicetokens and click on 'Add'. # You will see a debugging message regarding alternate name fields. {noformat} You need to update your sql to include additional name fields in the user object. line 3580 of /lib/moodlelib.php: call to debugging() line 220 of /admin/webservice/forms.php: call to fullname() line 191 of /lib/formslib.php: call to web_service_token_form->definition() line 55 of /admin/webservice/tokens.php: call to moodleform->moodleform() {noformat}",3 +"MDL-43238","12/06/2013 05:53:49","Improve event php doc to include other information","Event php doc should be improved to include other information if exists. Base contains information about the event, but other params are specific to event and should be documented, so it can be read by systemx for documentation. I have been looking at this and there is a proposal in PHP-Fig (psr-5) https://github.com/php-fig/fig-standards/pull/169/files#diff-9a10a11696dc38209c125ea9c57a565fR1245 Wordpress also suggest similar documentation http://make.wordpress.org/core/handbook/inline-documentation-standards/php-documentation-standards/#1-1-parameters-that-are-arrays",13 +"MDL-43250","12/06/2013 16:35:03","get_graders() matches potential graders from all groups","We have come to belief that the function that determines who should recieve a notification to grade a submission (/mod/assign/locallib.php:get_graders())is too broad. When using an activity in SEPARATE groups mode the function currently identifies potential graders as users who hold the grader capability and are in ANY group with the submitter in the course. We believe that this may be an issue. We have spent a while talking about this and feel that the {{groups_get_all_groups()}} function should also pass the activity's groupingid value so that, if a grouping has been selected, the potential graders are restricted to users within the activity's grouping. This should be a case of simply changing the line to {code} if ($groups = groups_get_allgroups($this->get_course()->id, $userid, $this->get_course_module()->groupingid) { {code} Like I said we have spent a while talking about this and we can't see the reason why this works the way it does, so we would also welcome someone explaining why it is the way it is!",3 +"MDL-43262","12/08/2013 14:47:02","Move dialogue default overrides to attributes","We override a couple of the Panel/Widget Attributes in the constructor for M.core.dialogue, rather than by modifying the attributes correctly. We should change to use the correct method as this gives us some minor performance improvements, allows us to document the API overrides, and helps us to clear up some of the code.",8 +"MDL-43266","12/09/2013 04:17:57","Testing sites are cleaning all test dataroot contents","Edit PDF plugin is adding files to dataroot/filedir during the moodle installation process, the same followed by phpunit and behat. When phpunit and behat resets the dataroot we clean all the contents of filedir so the files are still in the database but not in dataroot, accessing the Edit PDF admin settings page results in a fatal error when looking for the files that are supposed to be there. The files created during the moodle installation should remain in the database after the reset. As a solution I propose to store a list of the dataroot files present after the installation, and avoid cleaning those files when resetting the dataroot. Adding also 2.5 as affected branch as 3rd party plugins adding files during the installation processes are also affected.",13 +"MDL-43267","12/09/2013 06:52:09","Course menu to 'Move item' needs betterment for screen readers","The move item button (which pops up a menu) does work, but to activate it with a screen reader, all you hear is that it is a ""draggable graphic"". You don't know that you can click on it to actually do anything. Could it be coded with an to let the user know it is clickable? (Thanks Greg Kraus for spotting that)",100 +"MDL-43268","12/09/2013 09:14:50","Undefined index: filter in /lib/outputrequirementslib.php","Since upgrading to Moodle 2.7dev (Build: 20131205) from git://git.moodle.org/moodle, the following notice is printed on each page: Notice: Undefined index: filter in /***/lib/outputrequirementslib.php on line 1259 ",2 +"MDL-43270","12/09/2013 14:23:19","Migrate moodle-course-dragdrop to use Shifter","Migrate moodle-course-dragdrop to use Shifter",5 +"MDL-43271","12/09/2013 14:23:39","Migrate moodle-course-formatchooser to use Shifter","Migrate moodle-course-formatchooser to use Shifter",5 +"MDL-43273","12/09/2013 14:24:11","Migrate moodle-course-coursebase to use Shifter","Migrate moodle-course-coursebase to use Shifter",5 +"MDL-43274","12/09/2013 15:07:51","Prevent course logs from being deleted when course is reset","We have a scenario: {quote} A number of course activities disappeared, and there are no logs at all in the class from before the 22nd November. {quote} where the most plausible explanation is that: {quote} The activites were deleted and (only) the course logs reset {quote} From my reading of the {{reset_course_userdata()}} function the logs from mdl_log are *hard* deleted, using the {{$DB->delete_records()}} function. This makes trying to answer what actually happened very difficult from a forensic position. It would be preferable if either the log table rows were treated by Moodle as being immutable or if the reset function did something else. This may be an issue specific to us since we have a centralised service and we have to be able to explain to our teachers what it is they may have done.",8 +"MDL-43281","12/09/2013 23:23:46","blockregion.js doesn't recover properly after not finding region node","I believe this only happens on older themes that are not using the newer code to print out block regions. So, steps to reproduce could be tricky, but the problem is obvious in the code. Basically what is happening is if the block region JS fails to find the block region, then it attempts to create and add the region node to the page. This works fine except it doesn't re-fresh the local node variable.",3 +"MDL-43284","12/10/2013 01:20:59","Question bank needs some CSS attention","The action icons are cropped on the right in Clean theme. But maybe we can style the whole table a little better (add padding or something), see screenshots.",40 +"MDL-43289","12/10/2013 02:45:16","Events for submission","Create events for submission in all module: Related modules are: # Assignment # Workshop Please fill https://docs.google.com/spreadsheet/ccc?key=0As79sf2a3WehdDRMTTNWaHdwVm5BQW95eDc2OFV6TGc&usp=sharing while you are creating new events.",20 +"MDL-43291","12/10/2013 02:47:44","Events for collaboration ","Create events for collaboration in all module: Related modules are: # Forum # Wiki # Choice # Survey # Database Please fill https://docs.google.com/spreadsheet/ccc?key=0As79sf2a3WehdDRMTTNWaHdwVm5BQW95eDc2OFV6TGc&usp=sharing while you are creating new events.",40 +"MDL-43292","12/10/2013 02:49:28","Events for resources ","Create events for resources in all module: Related modules are: # Folder # File # Book # Page # Label # URL Please fill https://docs.google.com/spreadsheet/ccc?key=0As79sf2a3WehdDRMTTNWaHdwVm5BQW95eDc2OFV6TGc&usp=sharing while you are creating new events.",20 +"MDL-43293","12/10/2013 02:51:08","Events for comments","Create events for comments in all module, where comments are used. FYI: Comment abstract class has been included in MDL-40058. Please fill https://docs.google.com/spreadsheet/ccc?key=0As79sf2a3WehdDRMTTNWaHdwVm5BQW95eDc2OFV6TGc&usp=sharing while you are creating new events.",20 +"MDL-43294","12/10/2013 02:53:04","Events for submission response","Create events for submission response in all module: Related modules are: # Assignment # Workshop FYI: Check if Lesson essay and Quiz essay can be part of this. Please fill https://docs.google.com/spreadsheet/ccc?key=0As79sf2a3WehdDRMTTNWaHdwVm5BQW95eDc2OFV6TGc&usp=sharing while you are creating new events.",20 +"MDL-43295","12/10/2013 03:38:12","Debugging warning on saving an online text submission with an uploaded image.","Warning: Before calling format_text(), the content must be processed with file_rewrite_pluginfile_urls() (line 144 of /mod/assign/submission/onlinetext/locallib.php). It makes no sense to me that we are calling format_text and storing the result as 'content' in the event. IMO we should store the raw text and format instead. I think this should be a ""rule"" for all events. ",13 +"MDL-43302","12/10/2013 04:25:10","Migrate moodle-form-passwordunmask to use Shifter","Migrate moodle-form-passwordunmask to use Shifter",5 +"MDL-43306","12/10/2013 04:26:28","Backup introduces duplicate gradeitem sortorders when restoring","As discovered in MDL-41062, restore creates duplciate sort orders when restoring grade items. This can result in inconsistent sorting of items. Steps to reproduce: Setup: # Create COURSE1 with default settings # Add an assignment ASSIGNCOURSE1 with default settings # Create COURSE2 with default settings # Add an assignment ASSIGNCOURSE2 with default settings Create duplicates: # Go to COURSE1 # Select import, choose COURSE2 and choose to import ASSIGNCOURSE2 Examine the database and look at the sort order of the grade items. Duplicates should not be seen in the same course.",13 +"MDL-43307","12/10/2013 04:28:05","Migrate moodle-mod_assign-history to use Shifter","Migrate moodle-mod_assign-history to use Shifter",5 +"MDL-43314","12/10/2013 16:02:39","Running cron.php from CLI gives ""Moodle upgrade pending, cron execution suspended.""","We have a Moodle 2.6+ (Build: 20131205)that has an issue getting cron working from CLI, when running from CLI it oututs the message: ""Moodle upgrade pending, cron execution suspended."" If cron.php is executed from a web browser everything works as expected. The site runs on Ubuntu 13.10 PHP 5.5.3.13 MySQL 5.5.34.0.2 The only installed add-on is the essential theme Tried to purge all caches, it did not help.",3 +"MDL-43318","12/10/2013 21:09:07","Editing feedback for a previous submission edits the feedback for the wrong user ","When grading an assignment, if you allow another attempt and save changes - then edit the feedback of the first attempt - any feedback or feedback files uploaded do not get saved with for the attempt, despite seeing a confirmation message.",5 +"MDL-43323","12/11/2013 01:47:07","Lazily load moodle-core-tooltip dependencies","We don't need all of moodle-core-dialogue in all cases and should lazily load those dependencies until we do actually need them.",5 +"MDL-43325","12/11/2013 02:38:01","Some dialogues (exceptions, ajaxexception, confirm, etc) are no longer shown when instantiated","They used to be... and should still be. We were previously ignoring the 'visible' field. We now respect it (sanity prevails), but should be changing the default to true for all but the base dialogue. Note, although everywhere that we have confirm and alert dialogues in core, we already forcibly call show, or we set visible: true in it's config, but this is still a change from the API which has existed for quite some time so should be fixed. Exceptions and ajaxExceptions no longer display at all in many places.",3 +"MDL-43330","12/11/2013 04:18:12","Behat framework: add skip support","We should be able to skip a behat test. The idea is: * the step throw a SkipException * MoodleStepTester::executesteps() detect it and return the step as mark been skipped * the behat framework automatically skip other steps of the scenario (in theory) Example of behat step that do a skip: {code} __construct() line 1124 of /lib/outputrequirementslib.php: call to page_requirements_manager->string_for_js() line 2998 of /course/lib.php: call to page_requirements_manager->strings_for_js() line 285 of /course/view.php: call to include_course_ajax() String does not exist. Please check your string definition for hidefromothers/format_nosm_dashboard line 11423 of /lib/moodlelib.php: call to debugging() line 1088 of /lib/outputrequirementslib.php: call to lang_string->__construct() line 1124 of /lib/outputrequirementslib.php: call to page_requirements_manager->string_for_js() line 2998 of /course/lib.php: call to page_requirements_manager->strings_for_js() line 285 of /course/view.php: call to include_course_ajax() Invalid get_string() identifier: 'showfromothers' or component 'format_nosm_dashboard'. Perhaps you are missing $string['showfromothers'] = ''; in /var/development/pge/moodle/mainline/course/format/nosm_dashboard/lang/en/format_nosm_dashboard.php? line 6913 of /lib/moodlelib.php: call to debugging() line 11451 of /lib/moodlelib.php: call to core_string_manager->get_string() line 11476 of /lib/moodlelib.php: call to lang_string->get_string() line 1423 of /lib/outputrequirementslib.php: call to lang_string->out() line 882 of /lib/outputrenderers.php: call to page_requirements_manager->get_end_code() line 287 of /course/view.php: call to core_renderer->footer() Invalid get_string() identifier: 'hidefromothers' or component 'format_nosm_dashboard'. Perhaps you are missing $string['hidefromothers'] = ''; in /var/development/pge/moodle/mainline/course/format/nosm_dashboard/lang/en/format_nosm_dashboard.php? line 6913 of /lib/moodlelib.php: call to debugging() line 11451 of /lib/moodlelib.php: call to core_string_manager->get_string() line 11476 of /lib/moodlelib.php: call to lang_string->get_string() line 1423 of /lib/outputrequirementslib.php: call to lang_string->out() line 882 of /lib/outputrenderers.php: call to page_requirements_manager->get_end_code() line 287 of /course/view.php: call to core_renderer->footer()",5 +"MDL-43422","12/17/2013 06:04:58","Move javascript-static.js to rollup","We should move it to a rollup the same as all other JS to reduce page includes.",20 +"MDL-43437","12/18/2013 05:48:57","mod_wiki\event\page_version_deleted event unit test should compare objectid with versionid","Unit test for mod_wiki\event\page_version_deleted event unit test should compare objectid with versionid and pageid should be compared with $event->other['pageid']",2 +"MDL-43451","12/19/2013 02:37:59","Cron task ""Creating passwords for new users"" missing additional name fields","Running cron after using the dev course creator reveals: {noformat} Creating passwords for new users... ++ You need to update your sql to include additional name fields in the user object. ++ * line 3570 of /lib/moodlelib.php: call to debugging() * line 5948 of /lib/moodlelib.php: call to fullname() * line 240 of /lib/cronlib.php: call to setnew_password_and_mail() * line 61 of /admin/cli/cron.php: call to cron_run() ++ You need to update your sql to include additional name fields in the user object. ++ * line 3570 of /lib/moodlelib.php: call to debugging() * line 5795 of /lib/moodlelib.php: call to fullname() * line 5960 of /lib/moodlelib.php: call to email_to_user() * line 240 of /lib/cronlib.php: call to setnew_password_and_mail() * line 61 of /admin/cli/cron.php: call to cron_run() ++ You need to update your sql to include additional name fields in the user object. ++ * line 3570 of /lib/moodlelib.php: call to debugging() * line 5948 of /lib/moodlelib.php: call to fullname() * line 240 of /lib/cronlib.php: call to setnew_password_and_mail() * line 61 of /admin/cli/cron.php: call to cron_run() ++ You need to update your sql to include additional name fields in the user object. ++ * line 3570 of /lib/moodlelib.php: call to debugging() * line 5795 of /lib/moodlelib.php: call to fullname() * line 5960 of /lib/moodlelib.php: call to email_to_user() * line 240 of /lib/cronlib.php: call to setnew_password_and_mail() * line 61 of /admin/cli/cron.php: call to cron_run() ++ You need to update your sql to include additional name fields in the user object. ++ * line 3570 of /lib/moodlelib.php: call to debugging() * line 5948 of /lib/moodlelib.php: call to fullname() * line 240 of /lib/cronlib.php: call to setnew_password_and_mail() * line 61 of /admin/cli/cron.php: call to cron_run() ++ You need to update your sql to include additional name fields in the user object. ++ * line 3570 of /lib/moodlelib.php: call to debugging() * line 5795 of /lib/moodlelib.php: call to fullname() * line 5960 of /lib/moodlelib.php: call to email_to_user() * line 240 of /lib/cronlib.php: call to setnew_password_and_mail() * line 61 of /admin/cli/cron.php: call to cron_run() {noformat}",5 +"MDL-43481","12/22/2013 09:36:08","Cleanup: delete all unnecessary legacy password hashing code","In 2.7 we require PHP 5.4 which should not have any problems with new hashing, let's cleanup the code a bit now...",3 +"MDL-43488","12/23/2013 05:49:46","Self registration requires city and country fields","When a new user fills in the registration form for email-based self registration, the city and country fields are required. *Replication steps:* # Navigate to Site admin > Plugins > Authentication > Manage authentication # Ensure ""Email-based self-registration"" is enabled (default) # Enable "" Self registration"" (registerauth) # Open a new browser for the student # Click the ""Log in"" link in top-right corner # Click ""Create a new account"" _Expected behaviour:_ The city and country fields should be optional. _Actual result:_ The city and country fields are required.",2 +"MDL-43503","12/27/2013 15:18:24","Switch to paged results for LDAP","Now the Moodle 2.7 requirements have been set and we require PHP 5.4.4, we can now drop the non-paged results versions in both auth/ldap and enrol/ldap. Paged results were introduced by MDL-36119",2 +"MDL-43506","12/28/2013 00:17:55","Remove various deprecated block functions","add_pretend_block was deprecated in d9c26e217 - MDL-25654, albeit without specifying the deprecation version. This was removed in 2010 for Moodle 2.0.1 and should now be removed. the constants were removed in 2009 by [~timhunt] in MDL-19536 everything else was deprecated in 2009 (d4a03c00e) by [~timhunt] in MDL-19077/19010",5 +"MDL-43510","12/29/2013 07:24:50","phpunit 404 tests may fail when using custom exttests location","the problem is that response may start with xml tag breaking the following assert: {code} $this->assertStringStartsWith('results); {code} Solution is to remove this test completely because it has very little value...",2 +"MDL-43511","12/29/2013 07:44:53","question bank should not store references to MUC cache","MUC cache instances are cached internally, developers are expected to not store references to the cache returned from cache::make() because it breaks some types of MUC resets and probably when using different $identifiers parameter. I discovered this the hard way when hacking MUC in phpunit, the questions tests started breaking badly because of the $this->cache = cache::make('core', 'questiondata'); in question/engine/bank.php I was bitten by similar problem previously in dml drivers too...",2 +"MDL-43515","12/30/2013 06:40:55","cleanup PHPunit docs page linked from admin settings","* remove pear instructions * describe some more options * remove legacy migration info * etc.",2 +"MDL-43521","12/31/2013 11:18:05","Admin bookmarks block doesn't work","Discovered when going to update http://docs.moodle.org/en/Admin_bookmarks_block - there do not appear to be any admin pages which can be added to the bookmarks block, not even the ones suggested in the docs or in the (resolved) tracker issue MDL-25999 ",2 +"MDL-43525","01/01/2014 23:31:16","Allow add-ons to include YUI gallery modules","As a follow-on from MDL-36334, it would be useful if add-ons could specify their own gallery modules to include.",20 +"MDL-43527","01/02/2014 01:12:23","cleanup safe_mode references in 2.7","now that PHP 5.4 is required we do not need to check for safe_mode any more...",2 +"MDL-43528","01/02/2014 01:28:36","cleanup magic quotes stuff in 2.7","yay - magic quotes finally gone from PHP 5.4!!!",2 +"MDL-43529","01/02/2014 01:53:27","cleanup all references to register_globals in 2.7","yay - gone from PHP 5.4...",2 +"MDL-43537","01/02/2014 05:32:58","cleanup old environment check stuff","1/ custom checks in older branches - I guess we do not need them because we should never execute historical requirements such as asking for 2.6 compatibility in 2.7 branch 2/ the same goes for required/optional string warnings specified in environment.xml",2 +"MDL-43557","01/03/2014 07:07:47","Cleanup of existing events","# Check all events and fix any wrong 'other' or redundant information. # Fix the descriptions and keep them consistent (see MDL-44984).",20 +"MDL-43598","01/07/2014 23:46:53","Mod chooser causes a jump in scroll position when first used.","There is a bug somewhere in one of the following modules: * modchooser * chooserdialogue * dialogue To reproduce: # Log in as an admin # Browse to a course that requires scrolling to get to the bottom section. # Turn on editing # Scroll down to the bottom section and click to add an activity. # Notice that the scroll position jumps up the screen (usually to the top but depends upon your browser). Of interest in all browsers except Chrome I've observed that this only happens the first time the dialogue is disabled. In Chrome it seems to jump up each time you open the dialogue. ",5 +"MDL-43604","01/08/2014 05:05:57","add support for MariaDB 10.x","It looks like they decided to hack version numbers in future MariaDB release, my moodle tells me now that ""5.5.5-10.0.7-MariaDB"" is not high enough... Solution is to do some stripping of extra rubbish in our mariadb driver...",2 +"MDL-43605","01/08/2014 06:04:29","User Report In Grading shows all assignments, not only that of particular group","I have set 2 groupings and added assignment1 for first group and assignment2 for second group. Students submitted assignment and teacher had graded also.In the user report , it shows the separate groups drop down also. But in the report , user under first group also have, assignment2 in the list with the values '-'. And for overall percentage calculation, assignment 2 is also taken.This makes the false result. Same in the case of user in the other group. Am i missing to set something, so that only assignment of particular user comes under him in the reports? Please help.",20 +"MDL-43641","01/10/2014 04:50:48","Some moodle dialogs are positioned on not centred when they shoudl be","When you click the cancel link during the backup or the restore steps it appears a modal dialog to confirm that you want to cancel the process; it used to be located in the center of the screen and now it is appearing in the top-left corner. I've reproduced it using chrome and firefox, in 26 and master stable and integration.",3 +"MDL-43664","01/13/2014 07:43:10","JavaScript breaks on IE <= 8","The M.util.js_complete tests introduced by MDL-41030 use Array.indexOf. Unfortunately IE8 and below do not support indexOf. Although we don't support IE8, we shouldn't break this badly. Possible solutions include: # return early if indexOf does not exit on the Array; # switch to YUI's Array functions; and # monkey patch indexOf onto the Array. Since we don't support IE8, nor do we test it, I think we should just exit if the indexOf function doesn't exist.",5 +"MDL-43684","01/14/2014 06:12:46","Activity drag and drop makes an activity appear ""visible"" even when it's not.","Go to course page, enable editing, hide an activity, drag it to a new position. You will see the activity appears visible, but reloading the page will show it is really hidden still.",5 +"MDL-43688","01/14/2014 11:25:46","Clean: Notice about drag & drop being available is hidden under the navbar","When turning editing on on the course page, a notification appears on the top of the screen to notify the user about the availability of the drag and drop funcitonnality. This one appears underneath the navbar on Clean.",5 +"MDL-43714","01/16/2014 03:13:17","Notice: Trying to get property of non-object in lib/ajax/blocks.php on line 93","Easy to reproduce: # Open a terminal and start watching your apache logs (thats right folks you have to watch the logs) # Log in as an admin # Turn on editing # Drag all blocks on the left over to the right # When all blocks are on the right drag any block from over to the left. # Observe you have a notice in your logs now. {quote} {noformat} PHP Notice: Trying to get property of non-object in /var/www/integration/lib/ajax/blocks.php on line 93, referer: http://localhost/integration/course/view.php?id=2 PHP Stack trace:, referer: http://localhost/integration/course/view.php?id=2 PHP 1. {main}() /var/www/integration/lib/ajax/blocks.php:0, referer: http://localhost/integration/course/view.php?id=2 PHP Notice: Trying to get property of non-object in /var/www/integration/lib/ajax/blocks.php on line 93, referer: http://localhost/integration/course/view.php?id=2 PHP Stack trace:, referer: http://localhost/integration/course/view.php?id=2 PHP 1. {main}() /var/www/integration/lib/ajax/blocks.php:0, referer: http://localhost/integration/course/view.php?id=2 {noformat} {quote}",5 +"MDL-43723","01/16/2014 08:22:59","Users drag&drop the blocks instead of scrolling up/down.","When the blocks are displayed at the bottom of the pages (small screen) it's causing critical UX issues: * the drag and drop is triggered but the user only wants to scroll down. * when the user wants to drag and drop a block, he has hard time to move the block up or down. * the block drag and drop on Android is buggy. We just need to switch to the none AJAX version of the feature or display the accessible menu.",8 +"MDL-43725","01/16/2014 09:12:20","Undefined variable $strlogs in Live logs","I get a notice: Notice: Undefined variable: strlogs in /home/jakubka/workspace/moodle/report/loglive/index.php on line 81 $strlivelogs is used all over the file so maybe that should be on that line instead The address is in form of: /report/loglive/index.php?id=XXX",3 +"MDL-43737","01/17/2014 06:01:20","Remove the {!} place holders from the file-picker renderers","The file picker code is full of {!} place holders left over from the development work flow. These can be removed now.",5 +"MDL-43740","01/17/2014 07:43:24","Setting the ""Grade type"" of a manual grade item to ""None"" removes it from the Gradebook UI","Symptoms (all related to the Gradebook): 1. The Course Total column indicates ""Error"" for all students. (see screenshot 1) 2. The User Report gives the following error message: ""An error occurred during grade calculation: Probably circular reference or broken calculation formula."" (see screenshot 2) 3. The export to Excel spreadsheet function gives the following error message: ""An error occurred during grade calculation: Probably circular reference or broken calculation formula."" (see screenshot 3) 4. There are no broken formulas in the Gradebook UI, meaning that there is no way to fix this error. Steps to reproduce: 1. Create a manual grade item in the Gradebook. 2. Enter a formula in the grade item, referring to another grade item, such as =SUM([[X]],[[Y]]). 3. Then delete one of the grade items that are referred to in the aforementioned formula, e.g. delete the grade item referred to as ""X"". 4. Examine the formula; it should now have a ## token indicating that it is pointing to a non-existent grade item. 5. Edit the grade item and change the value of ""Grade type"" from ""Value"" to ""None"" 6. Examine the Gradebook - THE ITEM HAS NOW DISAPPEARED FROM THE GRADEBOOK GUI. 7. Examine the database (if possible) - the manual grade item still exists with gradetype=0 and the gradebook error persists. It is now only possible to solve this problem directly in the database. Cause: I have updated this report after our IT Support were able to track down the source of the problem. This problem is caused by the behaviour under item 6 in ""Steps to Reproduce"" above; namely, SETTING THE ""GRADE TYPE"" OF A MANUAL GRADE ITEM TO ""NONE"" REMOVES IT FROM THE GRADEBOOK GUI. This has happened on two separate courses which caused us major problems and it has taken us 6 months to track it down. ",13 +"MDL-43746","01/17/2014 16:00:41","require_course_login: incorrect variable assignment","In function *require_course_login* (/lib/moodlelib.php) $issite is never true if parameter $courseorid is not an object. {code}$issite = (is_object($courseorid) and $courseorid->id == SITEID) or (!is_object($courseorid) and $courseorid == SITEID);{code} is not working correctly because = has a higher precedence than and/or in PHP. It should be: {code}$issite = (is_object($courseorid) && $courseorid->id == SITEID) || (!is_object($courseorid) && $courseorid == SITEID);{code} ",2 +"MDL-43761","01/20/2014 07:02:26","improve database install performance (especially MySQL)","the trouble is that it may take more than 3 minutes to install the core tables in mysql which results in timeout, we should do better...",8 +"MDL-43784","01/21/2014 09:13:42","Clean up all the themes shipping in 2.7 by removing some from core","Moodle 2.7 contains two ""base"" themes that developers are maintaining: * base: the old deprecated base theme with minimal CSS to be functional. * bootstrapbase: the new responsive base theme with minimal CSS to be functional. As well as this theme that a lot of community themes use as a parent theme: * canvas: created by New School Learning but no longer maintained much None of the above themes are selectable for use as themes themselves. Moodle 2.7 will have two selectable themes based on bootstrapbase: * clean: as default, implementing almost pure bootstrapbase and to provide an clonable example of a basic theme * more: to allow basic admins to make simple tweaks to colours, images and CSS from UI without needing to touch files. Everything else should be removed and put into github.com as public projects (if anyone wants to maintain them) and moodle.org/plugins for download: * afterburner * anomaly * arialist * binarius * boxxie * brick * formal_white * formfactor * fusion * leatherbound * magazine * nimble * nonzero * overlay * serenity * sky_high * splash * standard * standardold ",20 +"MDL-43786","01/21/2014 10:35:46","""More"" - a new theme like Clean but with more customisation settings in the UI","*User pain* Not easy to quickly brand your site *Target* Organisation without the technical resources to customize a theme (any medium/small sites) *Objective* Being able to set the basics (background colour, text colour, link colour, logo) through the UI. *Task* compile LESS from PHP More thought about it: https://docs.google.com/document/d/1ktkigIsJrxcqPeHWcDdRANA1072JVZZ0azg0INo6v48/edit#heading=h.s3ovaozhzke0 ",100 +"MDL-43839","01/24/2014 08:56:11","Make Clean as the default theme in 2.7.","Clean needs to be the default theme in 2.7. Resolving this issue is most likely impacted by MDL-43784",8 +"MDL-43842","01/24/2014 09:42:42","Import code from Atto back to core.","Bump versions, import the code back from github, add to standard plugins, move pix_icons into core folder etc. Note: Coordinate with David Mudrak about AMOS strings again. ",5 +"MDL-43849","01/24/2014 22:31:45","The observers for the event 'user_enrolment_deleted' are not tested via unit tests","# View the file enrol/meta/tests/plugin_test.php and notice how the *_observer functions do not actually validate that the observers are working correctly. There is also no testing for the mod_forum observer for the user_enrolment_deleted event. Note - there already exists tests for these events in enrol/tests/enrollib_test.php, so it is not necessary to validate the whole event, just that the observer works as expected.",13 +"MDL-43853","01/26/2014 06:56:37","Make Atto toolbar buttons display all at once - instead of one by one.","The buttons appearing one-by-one looks distracting - hide the buttons until they are all loaded.",8 +"MDL-43854","01/26/2014 06:59:01","Import collapse plugin from prototype.moodle.net","The code for the collapse plugin was only done for the prototype.moodle.net site - get and check the code for it.",2 +"MDL-43855","01/26/2014 07:05:48","Implement a new equation editor for Atto","We have several sources to choose from. The requirements of the equation editor seem to be: 1/ Work with existing equations created with dragmath etc. 2/ Provide tabs with buttons for adding common latex elements (See mathquill) 3/ Provide live equation preview while editing the equation 4/ Show preview of equation in text editor (even before content is saved) 5/ Allow access to the tex source of the equation 6/ Allow editing of an existing equation without downloading/uploading files. This is tied to the choice for filter for rendering equations, because the filter should be responsible for displaying the equations in the live preview, and/or the content editable region. There is an equation editor in the prototype.moodle.net site which uses mathjax, but it does not give you a list of tabs/buttons for common functions (not a useful one anyway). ",20 +"MDL-43856","01/26/2014 07:14:48","Add a mathjax filter","A demo mathjax filter was added to the prototype.moodle.net text editor demo. This is a pretty good implementation, but there are 2 problems with it. 1/ The full mathjax library is hundreds of megabytes (fonts) - it's just too big to include the whole thing in Moodle. So - some fonts were stripped etc to keep the size of that one down - and it was still over 30MB. An alternative is to use the CDN mathjax library by default - and provide a method to download and install the full version into moodledata for people who require it (firewall/proxy etc). 2/ It does things properly (moodley) by wrapping the mathjax library a yui module and including it from the footer. This means that the loading of mathjax does not block the rest of the page displaying. The downside is that the alternative method of installing mathjax is to link to it in additionalhtmlhead. This includes mathjax earlier, so the equations on the page are rendered earlier - and some people prefer that option. Maybe there is an alternative way of including it that will load it earlier. 3/ However it is loaded/linked etc. In the forum samples I have seen, it is linked to from the head with almost a default configuration. This is a XSS risk - the tex allows some tokens which can produce e.g. javascript after rendering. MathJax has an option specifically for disabling those dangerous commands and this needs to be enabled. ",40 +"MDL-43857","01/26/2014 07:18:43","Auto cleanup Atto HTML","Especially from paste and paste from word functions. I have an experimental branch for this somewhere based on regexes. The hard thing here is getting sufficient testing data - access to several versions of word would help. ",40 +"MDL-43858","01/26/2014 07:20:19","New Atto plugin Insert Character","Add an insert character plugin to atto.",13 +"MDL-43859","01/26/2014 07:21:15","New Atto plugin Insert Smiley","Add insert smiley plugin",8 +"MDL-43860","01/26/2014 07:22:53","New Atto plugin switch language LTR/RTL","Add a plugin for this (disabled by default?)",8 +"MDL-43861","01/26/2014 07:24:19","Plugins for font/background colours in Atto","Disabled by default. Accessibilty concerns around contrast. ",20 +"MDL-43862","01/26/2014 07:27:14","Add mediamanager plugin for Atto","This requires an iframe in the popup because it uses an mform (which has dependencies etc to load). ",20 +"MDL-43863","01/26/2014 07:29:29","Add Undo/Redo plugins to Atto","Even though you can already do this with your native undo/redo shortcuts for your OS - it has been asked for.",20 +"MDL-43864","01/26/2014 07:31:20","Add atto plugin to prevent automatic linking.","This is a feature in tinyMCE 3 - so I guess we need it. Can we disable it by default please? ",13 +"MDL-43865","01/26/2014 07:32:29","Add a toolbar editor to Atto","Allow re-ordering and grouping buttons via an admin page.",3 +"MDL-43867","01/26/2014 08:36:15","Add a content accessibility checker plugin for Atto","Research either online tools or javascript libraries for checking the accessibility of a block of html and giving recommendations. Ckeditor has a plugin like this.",40 +"MDL-43869","01/26/2014 13:03:19","Atto does not display on qtype essay page","This page uses : in the ids for the form elements. While technically valid - They all need special escaping when calling Y.one() because : needs escaping in a CSS selector.",8 +"MDL-43870","01/26/2014 13:07:25","Blockquote in Atto behaves differently in different browsers","Because this is up to the browser in how to implement it, different browsers do different things. We should pick the best tag to use and manually set it. Was MDL-41461",20 +"MDL-43884","01/28/2014 08:49:19","$DB->get_tables() returns empty array for external databases.","For external databases we pass $db->prefix as false while connecting, where as in get_tables() we have the following check:- {code} if ($this->prefix !== '') {code} This results in empty result as the above condition is never met and the driver considers $prefix to be a valid prefix. I have noticed this in PGSQL, but this could be a bug with other drivers too.",5 +"MDL-43885","01/28/2014 08:55:21","moodle-core-notification-confirm should treat [X] like 'Cancel'","It does not.",5 +"MDL-43886","01/28/2014 09:54:53","moodle-core-dialogue leaves itself in the DOM after destroying itself","Noticed when trying to debug issues with the confirmation dialogue. Although we call destroy on the code, this does not actually remove it from the DOM. This is a minor issue but I think we should remove things from the DOM too to prevent confusion, and issues where the wrong dialogue is targetted somehow. Suggesting this as a master-only fix.",3 +"MDL-43893","01/28/2014 17:08:35","Remove YUI2 in group/*.js","There are a couple of innoculous pieces of JS in the group javascript we should convert to YUI3",3 +"MDL-43911","01/29/2014 16:16:43","Behat - add an option to take page dumps","Handy when you're trying to track down an issue with xpaths: * set behat_contentdump_path * run your failing test * copy/move the html file produced to your behat site * view in your browser * inspect the page immediately before it failed",5 +"MDL-43931","01/31/2014 03:23:41","Write unit tests for logging stores and managers","We need unit tests for the following:- # manager # Legacy store # Standard store # External store",20 +"MDL-43941","01/31/2014 21:56:54","Activity show/hide toggle doesn't work in hidden or orphaned sections","Clicking in the eye doesn't change the status but doing right click and opening link in new page works fine. I have tested it in different themes with Topics course format. Tested in Firefox 26 and Chrome 18",3 +"MDL-43948","02/02/2014 20:31:42","Possible reflected XSS in editor and imagefile form fields","We have the issue below reported to us via a security review of Totara, and since it also affects moodle/master I am reporting it here. I am reasonably sure that it is not exploitable, but I am not a security expert therefore I thought I'd better report it just in case. Feel free to close as not a bug if that is the case. The report is as follows: It has been detected by exploiting the parameter imagefile of the form located in URL [SITEURL]/user/edit.php?id=70&course=1 Request: POST [SITEURL]/user/edit.php Payload: {code} id=70&course=1&sesskey=xNwOTlWuU1&_qf__user_edit_form=1&mform_isexpanded_id_moodle=1&mform_isexpanded_id_moodle_picture=0&mform_isexpanded_id_moodle_interests=0&firstname=Whitney&mform_isexpanded_id_moodle_optional=0&lastname=Eldridge&email=whitney.eldridge@anaplan.com&interests[othertags]=1234&maildisplay=2&imagealt=1234&url=http://127.0.0.1/foo.html&imagefile=%22'%3E%3Cqss%20%60%3b!--%3D%26%7b()%7d%3E&mailformat=1&icq=1234&maildigest=0&skype=1234&autosubscribe=1&aim=1234&trackforums=0&yahoo=1234&htmleditor=1&msn=1234&city=San%20Francisco&idnumber=1234&institution=1234&timezone=99&department=1234&phone1=8000000000&phone2=8000000000&address=123 Main St.&submitbutton=Update%20profile {code} Response: {code} D%26%7B%28%29%7D%3E&subdirs=0&maxbytes=1048576000&areamaxbytes=-1&maxfiles=1&ctx_id=1&course=1&sesskey=xNwOTlWuU1' height='160' width='600' style='border:1px solid #000'>"" name=""imagefile"" type=""hidden"" />
    My second section< / div > *My new section* {{=> if the user tries to right align this section, as we apply the action on the parent tag, the first section will be impacted too. It is not the expected user behavior. The user just want to apply the action on the new section.}} < div >My third section< / div >",13 +"MDL-43965","02/04/2014 03:40:22","Deprecate add_to_log() function","The add_to_log() function is being replaced by event triggering. While all add_to_log() calls in core are being replaced, the function should be marked as deprecated so that messages are shown to developers of add-ons to prompt them to upgrade. It would be good to direct them to transition documentation in such messages. This might also help discover add_to_log() calls we might have missed in core. This issue represents the first stage of deprecation. A period of deprecation should be decided (default is two versions, but this may need longer) and a second issue should be created to finalise the deprecation. See http://docs.moodle.org/dev/Deprecation#Moodle_Core_deprecation_process",3 +"MDL-43966","02/04/2014 03:43:04","Write transition guide for events and logging","A docs page for developers is needed to describe how to replace the current use of add_to_log() with event triggers. http://docs.moodle.org/dev/Migrating_logging_calls_in_plugins",20 +"MDL-43967","02/04/2014 03:44:59","Write transition guide for reports that rely on logs","A docs page should be written for developers to describe how to replace their current direct log queries with logging readers.",20 +"MDL-43969","02/04/2014 04:53:54","Improve accessibility of shortform collapsing","As raised in MDL-43867, we currently have aria-live=""polite"" on the fieldsets which propagates down to every element in the fieldset. We also do not announce whether the fieldset is open or closed. We should announce the current state using the aria-expanded attribute, and remove the aria-live=""polite"" from the fieldset. The problem with the current solution is that it causes firefox/NVDA to read characters twice as they are typed into a field. ",20 +"MDL-43990","02/05/2014 03:58:10","Atto - add function to format the currently selected block.","This is needed by several issues in the sprint so I'm adding this new issue to do it once and handle all the edge cases: Plugins needing this: blockquote fix, nolink, ltr/rtl ",2 +"MDL-43994","02/05/2014 05:08:20","Hide drag/drop icon for docked blocks","IMO, it doesn't make sense to display the drag/drop icon in a docked block. We should hide it when blocks are docked.",3 +"MDL-43997","02/05/2014 06:59:27","Dialogues no longer show automatically, or modally","Since MDL-43262 and MDL-43259 landed in master, we no longer show some types of dialogue automatically or modally.",8 +"MDL-44000","02/05/2014 07:18:14","Atto: Image sizes should keep proportions when resizing","When changing the sizes of an image after resizing it, the proportions are not kept, making it hard to resize an image properly. This option could be optional as it is in TinyMCE.",5 +"MDL-44002","02/05/2014 08:50:43","Decide upon intended screen reader support","Each of the Screen Readers we've come across seem to do things their way, and have differing levels of support for: * different accessibility features; * browsers; and * operating systems We need to determine which screen reader(s) we intend to make Moodle work best with in order to choose the most optimal solution for these readers. Our selection also has a big impact upon the amount of time it requires to develop new functionality and changes, and to test it. From the compatibility matrix I've created so far (http://goo.gl/b4cVb5), there are approximately 30 combinations of screen reader + browser + operating system available to users. h4. Considerations Ideally, this should be as few combinations as possible because as we add each combination, the complexity increases dramatically, as does the time required for development and testing. The ideal solution would be for a single, well documented, well tested, and widely available screenreader, but as http://goo.gl/b4cVb5 shows, this will not be possible as no screen reader supports both Windows, Macintosh, and Linux whilst providing support for multiple browsers. Whilst Mobile support would be desirable, I think initially we should focus on improving the support for desktop screen readers as a priority and look at adding mobile combinations later. h4. Options Data suggests that the most widely used _primary_ Reader by far is *Jaws* [1] though it's usage has seen rapid decline over the past few years. Jaws is followed in popularity by Windows-Eyes, and Apple's Voiceover. ChromeVox is the only screen reader we've come across to support the same browser across multiple operating systems which may also be an important consideration for some users. At present its market share is low (0.2% [1]) but it is new to the arena - from what I can tell it was only released in February 2012 [2] with the survey taking place in May 2012. NVDA, which came in at fourth place in the webaim survey is also an interesting option as it is the highest ranked free solution for Windows, though it is only compatible with Windows and the Firefox + IE browsers. h4. Recommendations To offer the most widespread selection it makes sense to choose from the following subset of screen readers. I have not, at this stage, commented on the ease of development for each screen reader at present, or it's comparative support for various accessiblity functionality. h5. Jaws Pros: * High market penetration Cons: * Cost to users * Windows only * Internet Explorer only h5. NVDA Pros: * Free * Mid-level market penetration Cons: * Windows only * Firefox and Internet Explorer only h5. OS X VoiceOver Pros: * Free * Supports all browsers tested * Also available on iOS Cons: * Mac OS Only h5. ChromeVox Pros: * Free * Cross-Operating system Cons: * Google Chrome only h4. Sources: [1] http://webaim.org/projects/screenreadersurvey4/ [2] https://code.google.com/p/google-axs-chrome/source/browse/trunk/chromevox/README?r=143",40 +"MDL-44017","02/06/2014 08:15:30","Remove remaining uses of content_viewed, and deprecate it","We still have uses of content_viewed in core. It was decided to remove this from core because:- # There is no educational value in this event. # It doesn't contain enough information of what actually happened. # If some of the viewed events can be grouped together, they should have their own abstract parent. ex- course_module_viewed # we must not store localised strings in events # we should not store urls in other array - we have get_url() instead !!!",20 +"MDL-44038","02/07/2014 04:28:38","Atto: Focus on the editor is lost after opening a dialogue/menu","That is really inconvenient when using the keyboard on the buttons. To replicate: # Type a text and select it # Tab back to the link button in the toolbar # Trigger the link button with the keyboard # Tab to enter a URL # Tab to validate the dialogue # Your cursor is now lost somewhere and you need to tab through to get back to the editor Also try the _style_ picker, whenever you select a style or cancel the dropdown menu, the focus is lost.",8 +"MDL-44040","02/07/2014 04:43:46","Atto: Implement basic keyboard shortcuts people are used to","|| PC || MAC || Action || Browser responsible || | *ctrl + A* | ⌘ + A | Select all | (/) | | *ctrl + B* | ⌘ + B | Bold | | | *ctrl + C* | ⌘ + C | Copy | (/) | | *ctrl + I* | ⌘ + I | Italic | | | *ctrl + U* | ⌘ + U | Underline | | | *ctrl + V* | ⌘ + V | Paste | (/) | | *ctrl + X* | ⌘ + X | Cut | (/) | | *ctrl + Y* | ⌘ + Y | Redo | | | *ctrl + Z* | ⌘ + Z | Undo | (/) | | *ctrl + SHIFT + Z* | ⌘ + SHIFT + Z | Redo | (/) | Editor specific notes: *TinyMCE adds:* CTRL + 1..6: H1 - H6 respectively CTRL + P: Paragraph *CKeditor adds:* CTRL + L: Opens the link window. CTRL + ALT + ENTER: fits the editor to the window. *Aloha editor add:* CTRL + .: Superscript CTRL + ,: Subscript CTRL + \: Clear formatting CTRL + K: Insert link CTRL + P: Pre CTRL + 0: Paragraph CTRL + 1..6: H1 - H6 respectively Google Drive shortcuts are as noted here: https://support.google.com/drive/answer/179738",20 +"MDL-44042","02/07/2014 08:57:34","Keyboard drag/drop does not correctly move items to the top of current parent","In course resource drag/drop, selecting 'To top of section X' when the activity is already in that section causes it not to move.",5 +"MDL-44063","02/10/2014 06:57:15","Atto should start new content in a paragraph tag by default.","Currently, Atto does not insert anything in an empty text area, this works OK - but browsers will use divs by default, it would be better to make the default a paragraph (more semantic). We can do this easily by inserting

    in init if there is no text and removing

    on clean_html if it is the only thing in the div. ",40 +"MDL-44067","02/10/2014 15:05:49","Improve Atto Table controls","The inline menu icons break badly because (a) they prevent you entering a table cell (b) need to be kept in sync whenever the source is modified. Instead - I added remove the menu icons - and clicking on the table button when you have the cursor in a cell will open the table context menu at that cell. When the buttons are showing state this will work even better.",8 +"MDL-44079","02/11/2014 04:26:14","Pressing escape in nested modal dialogues should only close the top dialogue","If you open a filepicker, search for and preview a file, then press escape, all modals are closed instead of just the top one.",5 +"MDL-44083","02/11/2014 07:21:53","Atto has wrong icons for screenreader helper and accessibility checker","There is no existing useful icon for these things. Suggestions: Accessibility checker: http://upload.wikimedia.org/wikipedia/commons/thumb/4/4c/Gnome-preferences-desktop-accessibility2.svg/40px-Gnome-preferences-desktop-accessibility2.svg.png Screenreader: http://html.orange-idea.com/valera-wp/wp-content/themes/valera/assets/img/plus.png ",5 +"MDL-44092","02/11/2014 13:27:15","Add an active state to the buttons, when the text under the cursor has the style applied.","E.g. if the cursor is in some bold text, the bold icon should visually change.",8 +"MDL-44101","02/12/2014 03:57:27","Create generic way for Widgets to focus on something when they close","Ideally, when a dialogue is closed, it should focus on the item which opened it, or another appropriate contextual item. This is a fairly generic thing to do so we should try and make this easy for everyone by creating a module which any widget can plug into.",13 +"MDL-44106","02/12/2014 05:44:30","use 'restore' and 'ws' origin in logged events","h2. Current problem Problem is that we cannot just falsify log history by injecting log records from the restore file, events must be always triggered and we need to know where are the courses coming from, that means the restore process needs to log everything that is happening during restore. * import (=== backup+restore) of activities should not try to restore any logs * restore from different site cannot create log entries with non-existent users * duplication of course (restore into new course) may bork stats * statistics should probably ignore the events coming from restore completely h2. Possible solutions h3. A/ use events 1/ trigger \core\event\restore_started and \core\event\restore_finished events (this might be useful in any case) 2/ log writers would watch for these and start adding 'restore' origin when writing events to storage during the restore process h3. B/ new $PAGE->get_request_origin() The idea is to have one method that tells you if you are doing something from normal page, ws, cli, restore. The restore code would use some private API to tell PAGE that restore starts/end or it could even use 1/, but that would require a new observer which does not seem optimal to me. At the same time we could add $PAGE->get_request_ip(). After A/ or B/ is implemented we could filter out logs coming from the restore process in stats and other areas where we want to ignore the events triggered during restore. The next step would be to optionally restore the original log data - we would need backup/restore support in log stores and new method in base event class which would have to be overridden by events that can recalculate the ids. ",20 +"MDL-44107","02/12/2014 06:57:28","Deprecate $event->can_view() until its purpose has been clarified","The can_view() method in event base looked like a good idea, unfortunately it is not easy and cheap to implement it everywhere. At preset it is returns true for admin only which makes it unusable in reports. At present the reports are expected to use own capability together with \core\log\reader::can_access($reportcontext) and ignore the \core\event\base::can_view() method.",40 +"MDL-44124","02/13/2014 04:22:04","Ical import ignores some recurrence rules","While working on MDL-42079, I noticed our import library ignores some of the imported recurrence rules, such as FREQ=DAILY; which is a valid rule.",20 +"MDL-44127","02/13/2014 07:08:53","Atto Improve API when a plugin wants multiple buttons.","There is a bit of code in there expecting a 1 to 1 mapping of plugins to buttons. This need not be true. Should be used by lrt/rtl, justify (link could do it too). ",2 +"MDL-44128","02/13/2014 07:19:47","Atto: Toolbar menus should work with keyboard navigation","It is confusing when using left-right through the menu to get to a context menu, and then having to tab in the dropdown menu. I think we should use arrow keys in that case too.",8 +"MDL-44131","02/13/2014 09:31:09","Make the Atto equation editor example library into an aria toolbar.","This means manage the active descendant, keyboard navigation, tabindex etc. ",20 +"MDL-44149","02/14/2014 00:19:47","Assignment resubmissions do not automatically reopen if using quick grading","It seems as if assignments will only automatically reopen (with attemptreopenmethod_untilpass set) if using the save_grade function (marking students one by one) and not if using quick grading and the process_save_quick_grades function. As a result, this also affects the offline grading worksheet.",5 +"MDL-44161","02/14/2014 07:09:38","Modal Dialogues cause a jump in page position","https://github.com/yui/yui3/pull/1636",8 +"MDL-44164","02/14/2014 09:36:49","Refactor Atto code","I've put together a (mostly) working PoC to restructure the atto code. At present, the code is based around a structure which must be aware of every editor on the page. We have to pass around an elementid, and each plugin adds buttons to their own element, but with a single click handler. The code also does not meet the coding style guidelines. IMO, we need to refactor this to: * not pass around the elementid; * comply with coding style requirements; * include API documentation to assist plugin developers; * have one editor instance per editor; * have instances of the plugins on each editor rather than globally. This will: * make our lives far easier in the future to maintain because we'll be reducing the code duplication; * allow people to write plugins more easily and with much less code duplication; * which will allow for a greater diversity of plugins in a shorter period; * give better confidence from third-party developers writing plugins for the new editor, and as a result the community as a whole (just think how much we've complained about the TinyMCE plugin structure). Personally, I feel that this needs to be done before integration, and certainly before release. I've been working on a PoC which is semi-functional (35% of plugins are already done and the others aren't far off) and it only took a few hours to write including appropriate API docs. ",100 +"MDL-44215","02/17/2014 04:09:45","Atto: Toolbar should wrap on several lines","Currently, when expanding it, some buttons are opened on the same line, some on the next one. This creates an inconsistent visual experience on Desktop. The buttons should have a constant position so that it makes it easy to find them, and see where they will appear when expanding/collapsing. Damyon: I think this is not a blocker (it could be an improvement, but to decide on the best functionality, is difficult as there will be differing opinions. I agree that a consistent order makes things easier to ""learn"" (so they can be repeated quickly). This will be improved by having keyboard shortcuts. Also maybe just adding a break before the non-collapsed buttons is enough. The downside to more wrapping, is that on smaller screens there is more real estate taken up, and the wrapping starts to look random (long, short, long short etc).) ",13 +"MDL-44216","02/17/2014 04:10:56","Atto: Invert indent/outdent buttons","Invert indent/outdent buttons (inconsistent with any other editor). ",5 +"MDL-44217","02/17/2014 04:11:22","The link colour in Bootstrapbase is not WCAG compliant","According to the accessibility checker in Atto, in Boostrapbase/Clean the contract of the links are reported as not compliant with WCAG AA.",8 +"MDL-44218","02/17/2014 04:11:41","Atto: Limit the height of the editor to prevent the toolbar to go off screen","Limit the height of the editor to prevent the toolbar to go off screen. There are some options for this: * forced max height that cannot be changed, * default max height that can be manually sized, or * graceful resizing so that the editor remains contained within its usable space. The complexity of these option is in increasing order. The middle option may be the best compromise.",13 +"MDL-44219","02/17/2014 04:13:40","Atto: A large selection causes the editor to freeze for some seconds","A large selection causes the editor to freeze for some seconds. This is due to the state checking for button highlighting... https://github.com/damyon/atto_27/commit/dfe7bcddb6f49dcbe4c37edf00564f2bd15e883b",40 +"MDL-44220","02/17/2014 04:14:04","Atto: Being able to set the alignment (flow) of the images","Being able to set the alignment (flow) of the images. ",13 +"MDL-44221","02/17/2014 04:14:29","Atto: Table plugin not adding a table on IE","Table plugin not adding a table on IE8/9",40 +"MDL-44222","02/17/2014 04:16:21","Atto: Image plugin not reliable editing an existing image","Selecting the image and then clicking the image button does not always work as expected.",20 +"MDL-44223","02/17/2014 04:20:04","Atto: Missing images are not displayed at all in the editor","Images with dead link are not displayed at all in the editor, it is impossible select them to fix or delete them. ",8 +"MDL-44224","02/17/2014 04:20:36","Atto: Indent/outdent plugins should not use
    ","Indent/outdent plugins should not use
    tag 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 Administration 0, )] 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}&nbsp;{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 like

    showing 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
      1. elements are used semantically Impact: serious Element location #activities-5 > .nav-item:nth-child(1) Element source
      2. 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