issuekey,title,description,storypoint MDL-1626,"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,"Forum: Reply by e-mail","How about the ability to post to the forums via email?",100 MDL-5583,"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,"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-10115,"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,"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,"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-16073,"Add ""test database setup"" to the ""External Database"" enrollment and authentication plugins","It is hard to test whether the administrative panel for External Database Authentication and for External Database Enrollment is configured correctly. Currently, you have to create fake user accounts or similar, and try to authenticate them or enroll them and see if they receive email, etc. (At least, that's how I tested it! Does someone have a better way?) It woule be nice to have a ""Test Connection"" button on that page which goes through and makes sure all the db info (username, password, connection, etc.) and data mapping is correct. AND prints out all this stuff to the screen in an easy-to-read report. Thank you!",4 MDL-16474,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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-21469,"Chat window uses browser language rather than preferred language set in profile","Steps to reproduce: 1. Set browser language to say Dutch. 2. Login to demo.moodle.net with any of the demo accounts. 3. Access http://demo.moodle.net/mod/chat/view.php?id=203 and click the enter the chat. Expected result: text in the chat window is in English (preferred language set in profile) Actual result: text in chat window is in Dutch",3 MDL-22236,"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,"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,"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-24120,"Allow admin to remain logged in after login as procedure","log in as admin to moodle 2 go to a course (home page is enough) from participants block, select a student and login as him/her do something (at least nothing) and return to your personal account at the end of this process, you are always logged out",20 MDL-24287,"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,"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,"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-24775,"a pagedown key press in any tinymce editor destroys entire page layout","a page down in any tinymce editor will kill the layout of (maybe almost) any page in moodle. ",20 MDL-25473,"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-25544,"Improve Grader report user interface","This issue is a large one focussed on improving usability and accessibility for teachers using Moodle gradebook (Grader report) on all browsers including touch screens and screen readers. The Moodle Gradebook Working Group met in June 2014 and determined a number of key required features, which are detailed on the specification at http://docs.moodle.org/dev/Grader_report_2014 (still being finished). In a nutshell expect: # Full screen spreadsheet-like display that scrolls well but has static headers and footers. # Filters to quickly reduce the information being dealt with. # Links to row/column editors for speed and affordances.",100 MDL-26170,"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,"'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-26408,"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-27158,"Default timezone is incorrect when not set in PHP configuration","When 'date.timezone' is not set in the PHP server configuration, Moodle sets the base timezone to PHP's default which is 'Asia/Jayapura'. When you then set a timezone in the administration area, to say 'Australia/Adelaide', the time is half an hour too fast. If the 'date.timezone' is set in the PHP server configuration, this is not an issue. The problem seems to be that PHP is still thinking 'Asia/Jayapura' is the base timezone, which is GMT+9 hours. When Moodle stores the timestamp, it subtracts the 9 hours from the current time, storing a ""UTC"" timestamp value. When Moodle then goes to display a time (i.e. assignment conditional access times), it adds +9.5 hours to the timestamp which gives the incorrect time. When using ""Server's local time"", it works fine and there is no issue either. However, if Moodle is set to use ""Server's local time"", and then a user manually sets their timezone, it is again incorrect. Might be related to MDL-22625, but it seems a little different again.",20 MDL-27339,"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,"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,"[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,"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,"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,"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-29441,"Chat window does not pop up for separate groups in IE7-9","Using separate groups and IE7, 8 or 9, when you click to enter the chat it does nothing. If you select All Groups you can enter the chat. Replication steps: # Setup 2 groups # Go to a chat where the group mode is ""Separate groups"" # In the upper left corner, select a group # Try to enter the chat",4 MDL-30195,"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,"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,"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,"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,"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,"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,"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,"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,"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-31379,"Introduce new grading fields - dategraded and datesubmitted","We could possibly do with some new fields in the grading objects to make grading easier. There is a to do note in /lib/grade/grade_grade.php {code}TODO: HACK - create new fields in 2.0{code}",5 MDL-31410,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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-33057,"Rewrite DND Upload to YUI module (performance)","This is just something that would be really nice to do, given much of the course ajax JS has now been converted into YUI modules this really should as well to keep things clean and organised. Cheers Sam",100 MDL-33343,"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,"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,"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-33741,"Teacher can't access course files in hidden categories using the Filepicker with the server files repository ","*Replication instructions:* # Login as administrator # Create 2 categories # Create two courses, one in each category and assign the same teacher to both. # Create 1 file resource (with 1 file) on each course. # Hide one of the categories # Logout and login as the teacher # Enter the course on the visible category # Create a file resource # Click on add file button to access the file Picker # Select the server files repository # Click on system to access the root dir Result: The course on the hidden category is not listed. If you try to do steps 7 to 11 as an admin, you will be able to see the course and the files.",4 MDL-34055,"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-34161,"Fix LTI backup and restore to support course and site tools and submissions","While reviewing MDL-32614 it was discovered that the handling of information in backup & restore, especially related with modules pointing to course or site tools is far from perfect. Also it seems that submissions aren't handled at all. This issue is about to fix the backup & restore processes to support all that information.",1 MDL-34182,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"Add deprecate warning to get_context_instance() function","Add deprecate warning to get_context_instance() function",3 MDL-34496,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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-35973,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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-36082,"User cannot add necessary accessibility attributes to make the default video player accessible.","*Issue* The following issues are reported for a video uploaded via the file picker. There is no way for a teacher to add this information, meaning no form fields or meta data. Time-Based Media - There is no text alternative provided to describe the video. Transcript - There is no descriptive text transcript provided for the content of the video. Captions - There are no synchronized text captions provided for the content of the video. Audio-description - There is no audio-description provided for the purely visual content of the video. *Standard Level* WCAG 2 1.1.1 (A) [http://www.w3.org/TR/UNDERSTANDING-WCAG20/text-equiv-all.html] WCAG 2 1.2.1 (A) [http://www.w3.org/TR/UNDERSTANDING-WCAG20/media-equiv-av-only-alt.html] WCAG 2 1.2.2 (A) [http://www.w3.org/TR/UNDERSTANDING-WCAG20/media-equiv-captions.html] WCAG 2 1.2.3 (A) [http://www.w3.org/TR/UNDERSTANDING-WCAG20/media-equiv-audio-desc.html] *Impact* Critical Serious *Example Link* [http://demo.moodle.net/] *Test Steps* # Login as teacher # Navigate to the CF101 course # Turn editing on # Add a file resource # Upload a video file # Try to add any of the accessible information.",100 MDL-36088,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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," 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,"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,"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,"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,"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,"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,"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,"Import phpmailer 5.2.7","see https://github.com/Synchro/PHPMailer/blob/master/changelog.md",2 MDL-37528,"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,"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,"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,"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,"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,"$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,"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,"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,"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,"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-38325,"maximise/minimise button to hide the lateral blocks/dock","It will be nice to have a maximise/minimise button to hide all blocks on page to get more viewable area. [~leblangi] is using similar concept on his site [see here (at the left of lang menu)|https://studium.umontreal.ca/course/index.php?lang=en] ",40 MDL-38347,"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,"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,"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,"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,"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,"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,"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,"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,"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,"$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,"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,"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,"Remove unused FRONTPAGE* constants","Remove constants described in /course/lib.php that are not used since 2.5: FRONTPAGECOURSELIST, FRONTPAGETOPICONLY, FRONTPAGECOURSELIMIT",2 MDL-38868,"Web Services returns empty array when permissions are invalid for 'core_user_get_users_by_id' request","When using the Web Services over REST (with JSON return) Moodle will return an empty array ('[]') when permissions are not enabled for the command 'core_user_get_users_by_id'. It should return an 'Invalid permissions' error in the JSON response.",8 MDL-38903,"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,"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,"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,"Replace strtolower in block/completionstatus with textlib::strtolower","Needs to be multibyte safe.",2 MDL-39150,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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-39715,"Mobile-friendly way to display blocks on small screen","""Bootstrap"" themes: define the way to display blocks on small screen. At the moment all blocks are displayed at the bottom of the page. In real usage it may be a minor issue (the user only scrolls there when a user needs to go there, so the issue frequency depends how many time a user need to access a block), but it doesn't feel mobile friendly. Possible alternatives to existing: * all blocks could be move on a side bar on the right. The bar could be slided (left swipe or hamburger button). * each block names could be integrated to a new mobile navigation menu (like the HTML5 mobile app). When you click on the block, it is displayed in one entire page.",100 MDL-39736,"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,"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,"On discussion page, user name is overlapping with profile picture","This occurs in iPod touch/iPhone4s potrait view.",5 MDL-39748,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"Long Breadcrumbs get wrapped on narrow screens when using Clean Theme","The bread crumbs do not wrap nicely",20 MDL-39813,"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,"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,"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-39817,"Grading is not mobile friendly","smaller screens have a really long scroll before you can start to move horizontally, then a big scroll back to the area you wanted to see",100 MDL-39844,"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,"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,"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,"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,"Pre and post performance profiling","Decide and implement performance tests, to measure the impact of the changes.",5 MDL-39851,"Full screen popup for mobile (filepicker/activitychooser)","Filepicker and activity chooser should be full-screen popup in mobile device. They should not be drag-able. Have a look if there are any other popup that should be fullscreen. The focus should be on: - the popup never moves whatever the user action happens inside the popup. - the popup fits the entire screen. Scroll down is allowed till the bottom of the screen is still the popup itself (i.e can't see the moodle site). - remove the rounded corner ",60 MDL-39854,"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,"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,"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,"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,"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,"Implement external database log storage plugin","Implement external database log storage. It should be possible to disable.",100 MDL-39949,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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-40020,"Check usage of comment::init() and set component param","With MDL-37243 fix, component name should be passed by plugins using comments. Currently init check values from optional_param, it will be nice to set them with proper validation.",20 MDL-40034,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"Long Block Titles Overflow in Clean","See screenshot. A long block title overflow the block and extends into the central content.",5 MDL-40220,"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-40228,"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,"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,"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,"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,"Add unit tests for core_files_external::upload","Add unit tests for core_files_external::upload()",5 MDL-40338,"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,"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,"Remove deprecated icons","Remove deprecated icons",3 MDL-40436,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"Extract icons from TinyMCE 4.0","Remove the icons from TinyMCE and create an AI file for the main issue",8 MDL-40769,"Create Icons from TinyMCE vector","Create SVG and PNG icons from the AI file",20 MDL-40770,"Implement Icons for TinyMCE 3.*","Create the code that will be used render the icons for TinyMCE",20 MDL-40786,"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,"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,"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,"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,"Assignment marking guide screen is laid out poorly in Clean","See screenshot. This is the new assignment module. Theme == Clean.",20 MDL-40874,"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-40907,"Replace add_to_log with an event trigger - course module","Replace the add_to_log calls for the following area, with a call to the get_legacy_logdata function in the event class. *Course / module* /course/modlib.php:145: add_to_log($course->id, ""course"", ""add mod"", /course/modlib.php:148: add_to_log($course->id, $moduleinfo->modulename, ""add"", /course/modlib.php:493: add_to_log($course->id, ""course"", ""update mod"", /course/modlib.php:496: add_to_log($course->id, $moduleinfo->modulename, ""update"", /course/lib.php:1561: add_to_log($cm->course, 'course', ""delete mod"", /course/dnduploadlib.php:716: add_to_log($this->course->id, ""course"", ""add mod"", /course/dnduploadlib.php:719: add_to_log($this->course->id, $mod->modname, ""add"", /course/resources.php:51: add_to_log($course->id, $modname, 'view all', ""index.php?id=$course->id"", '');",30 MDL-40908,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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-40975,"Review new course editing interface","MDL-39814 saw a new menu introduced for course editing icons. This menu displayed status related icons as they originally were and editing icons in a drop down. There has been a lot of different opinions about what should have been where. This issue is to collect peoples opinions and then make a decision that we'll stick with. Presently permanently displayed: * Move * Show/Hide * Groups Presently displayed in the dropdown: * Edit title. * Indent. * Update. * Duplicate. * Delete. * Assign roles.",100 MDL-41031,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"Replace existing add_to_log calls for mod_assign","Replace the existing add_to_log calls for mod_assign.",40 MDL-41123,"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-41128,"Import latest branch of upload pdf code","Import latest branch of upload pdf code and make sure it is passing all unit tests. Note - it will not be functional initially because the submission_pdf will be missing.",4 MDL-41131,"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,"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,"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,"Add unit tests for editpdf after refactoring","Add unit tests and behat tests to feedback_pdf plugin",5 MDL-41152,"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,"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",1 MDL-41161,"upgrade mod_chat from yui 2 to yui 3","As described in MDL-39770 there is a mysterious bar that appears when using chat on a phone. Its quite likely due to the use of yui2. Upgrade to 3.",100 MDL-41170,"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,"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,"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-41187,"Polish Moodle dialog for mobile","This is a META issue for Moodle dialog on mobile device, especially phone.",52 MDL-41188,"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,"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,"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,"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,"Update YUI to version 3.12.0","YUI needs to be updated to version 3.12.0",2 MDL-41213,"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,"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,"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,"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,"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,"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,"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,"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-41231,"Export to portfolio button at bottom of database activity view doesn't work if Delete selected button is displayed.","The new Delete selected button overrides the Export to portfolio button. This means that the Delete selected button doesn't do anything and the Export to portfolio button now tries to delete selected entries. This is due to the fact that each of these sections can be enabled and disabled and generate a closing form tag, which when both are active causes a problem.",4 MDL-41232,"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,"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,"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,"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,"Atto HTML Editor - Close the styles menu when clicked outside","HTML 5 Text Editor: Close the styles menu when clicked outside",13 MDL-41251,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"Edit PDF: Add line tool (including rectangle + oval tools)","Write the YUI renderer for the line tool. ",13 MDL-41277,"Edit PDF: Add rectangle tools","Add support for the rectangle tool.",13 MDL-41278,"Edit PDF: Add support for the oval tool","Add support for the oval tool",13 MDL-41279,"Edit PDF: Add support for the pen tool","Add support for the pen tool",13 MDL-41280,"Edit PDF: Add support for the stamp tool","Add support for the stamp tool",13 MDL-41281,"Edit PDF: Add support for the select tool","Add support for the select tool: * erase * drag and drop",13 MDL-41283,"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,"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,"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,"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,"Buffering in standard log storage","Improvement to Moodle standard DB log storage supporting buffering and performance tuning",100 MDL-41289,"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,"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,"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,"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,"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,"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,"button alignment on course outcome screen is wonky in Clean","See screenshot",5 MDL-41385,"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,"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,"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,"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,"Replace enrol_meta event handlers with event observers","Replace enrol_meta event handlers with event observers ",8 MDL-41415,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"Fix heading level for Quiz","Fix heading level for site consistency.",8 MDL-41619,"Event files should not be accessed directly (ie. through the URL).","Not all the events declare defined('MOODLE_INTERNAL') || die();",1 MDL-41633,"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,"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,"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,"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,"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-41707,"Allow phpunit tests to use local external files or skip external tests completely","Currently Unit tests require access to external servers. Unit tests can fail when you don't have sufficient access to the internet or when certain services are down. If tinyurl or download.moodle.org are not operating correctly then unit tests fail. This is not always the desired behaviour for others completing unit testing. So we want to add an option to exclude tests from being executed when they are remote. By default we will continue with the current external runs to ensure we don't change the current expected behaviour.",4 MDL-41713,"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,"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,"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,"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,"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,"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,"Edit PDF: Add support for the highlighter tool","Also needs transparent images for backend rendering.",5 MDL-41800,"EditPDF: Add comments quicklist","Add the comments quicklist + searching interface.",8 MDL-41805,"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,"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,"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,"Edit PDF: Split up javascript into smaller modules","Suggestions are: comments, annotations, menus, quicklist and editor",40 MDL-41833,"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,"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,"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-41870,"Atto HTML Editor: Implement Aria managed keyboard navigation for the toolbar","The main benefit here is one tab will skip over the toolbar. http://www.w3.org/WAI/PF/aria-practices/#kbd_general_within",4 MDL-41885,"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,"Import Typo3 4.7.15","see http://typo3.org/download/",2 MDL-41904,"Import markdown 1.3","see http://michelf.ca/projects/php-markdown/",2 MDL-41938,"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,"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-41960,"META: File manager/File picker toolbars do not match the new toolbar style.","MDL-41713 implements the new toolbar styles for the Atto text editor. The edit pdf feature also has a toolbar that will match this style. Without also changing the other toolbars in Moodle - we will end up with a hodge podge. The file manager is particularly important as it is often shown in the same form as the text editor. ",24 MDL-41962,"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,"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,"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,"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,"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,"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,"Use observers instead of handlers in mod_chat","The user_logout event is now different, we should then use the observers.",5 MDL-42002,"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,"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,"Use observers instead of handlers in enrol_cohort","They should have been converted along with the cohort_* events.",5 MDL-42014,"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-42015,"Module-specific activity completion requirements do not show in course completion","Custom requirements for forum activity ('Student must post discussions or replies', 'Student must create discussions', 'Student must post replies') do not show in completion progress details.",13 MDL-42021,"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,"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,"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,"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,"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,"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,"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-42040,"Organize the registration of shutdown handlers","This issue arrived because, recently I've started to get some ""$DB not available"" messages when profiling pages, leading to the profiling runs not sent to DB. And I'm pretty sure that it has been working ok since 2.0, until we introduced the new sessions stuff that changed the internal order of those handlers. So please, avoid arguing things like ""it should not be using $DB"" and friends (I'm aware of them). It worked and now it does not. Let's try to improve the situation and the future. Right now the registration of shutdown handlers (register_shutdown_function) is completely chaotic and disorganized, and that can lead to more and more problems where some objects, not available anymore, or disposed by a previous handler are needed later in the chain of shutdowns. {code} grep -lr register_shutdown_function * {code} So we need some method to organize and force their registration in an ordered way, declaring their needs (DB, logging, whatever) and observing any dependencies between them and also, surely containing references to all the needed used to avoid its auto-disposal by php. Not sure how to encapsulate all that information (needs, dependencies, disposal) nor how to behave (multiple handlers vs a big one in charge of everything). But it should be computable, I hope. Ciao :-) ",4 MDL-42044,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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-42144,"Improve Dynamic Loading in Repository filepicker","As discussed in MDL-41215, there are a couple of improvements we can make to the dynamic loading (infinite scroll) for the repository javascript to help improve performance.",2 MDL-42147,"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,"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,"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,"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,"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,"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,"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,"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,"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,"fix message text formatting","the message formatting code is not ok, let's cleanup this area",8 MDL-42208,"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,"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,"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-42217,"Course actionmenu is not toggled by coursebase setup_for_*","As discussed in MDL-42117, we have an invocation system for when new modules are added (e.g. drag+drop). The actionmenu should ideally use this system rather than it's own.",4 MDL-42223,"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,"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,"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,"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-42227,"Funkiness with drag/drop","* New course * Turn editing on * Add a CM to Section 1 * Refresh the page (make sure we have a clean slate) * Drag the new CM to Section 2 (do not refresh) * Drag the new CM to Section 1 (do not refresh) * Drag section 1 down (it tries to drag section 2)",20 MDL-42235,"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,"Style the filemanager to match the new toolbar","Please refer to this issue MDL-42129 for the mock-up",20 MDL-42237,"Style the filepicker to match the new toolbar","Please refer to this issue MDL-42130 for the mockup",20 MDL-42239,"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,"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,"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,"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,"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,"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,"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-42289,"Automate MDLQA-57 - Past chat sessions can be made available for everyone to view","As described in MDLQA-57, past chat sessions can be made available for everyone to view",41 MDL-42292,"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,"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,"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,"Automate MDLQA-5257 - An admin can award a site badge","As MDLQA-5257 described, an admin can award a site badge",3 MDL-42331,"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,"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,"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,"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,"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,"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,"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,"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,"remove unused OLE lib and pear excel leftovers","see MDL-42148",3 MDL-42386,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"eliminate standardwhite references in lib/setup.hp","// Ensure a valid theme is set. if (!isset($CFG->theme)) { $CFG->theme = 'standardwhite'; } ",1 MDL-42461,"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,"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,"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,"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,"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,"backport MDL-41245 add-on installer redirection fix from master","This should finally resolve the problem when installing missing dependencies...",5 MDL-42497,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"add Russian Ruble to list of paypal currencies","Russian Ruble - RUB ",1 MDL-42682,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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-42935,"user_create_user and user_update_user functions do not validate auth, lang or theme","The function update_users_parameters contains - {noformat} 'auth' => new external_value(PARAM_PLUGIN, 'Auth plugins include manual, ldap, imap, etc', VALUE_OPTIONAL, '', NULL_NOT_ALLOWED), 'lang' => new external_value(PARAM_SAFEDIR, 'Language code such as ""en"", must exist on server', VALUE_OPTIONAL, '', NULL_NOT_ALLOWED), 'theme' => new external_value(PARAM_PLUGIN, 'Theme name such as ""standard"", must exist on server', VALUE_OPTIONAL), {noformat} However, none of this is validated (like it is in the create_users function).",13 MDL-42956,"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,"create a course_module_viewed abstract class","We need an abstract class for all those course_module_viewed events",8 MDL-42973,"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,"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-42983,"Clean: Custom menu and login info does not appear on small screen","On iPhone4S iOS7, the Custom menu and login info do not appear on Safari and Chrome. Though once i saw it appear on both browsers but only once and never again",20 MDL-42993,"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,"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-43005,"tag param in blog index page should be strictly checked","we have {code} $DB->get_record_sql(""SELECT * FROM {tag} WHERE "". $DB->sql_like('name', '?', false), array(""%$tag%"") {code} Which returns error like {code} Error: mdb->get_record() found more than one record! line 1427 of /lib/dml/moodle_database.php: call to debugging() line 43 of /blog/index.php: call to moodle_database->get_record_sql() {code} when we have two tags similar to each other. For example: - tag and tagtest",4 MDL-43008,"Calendar plugins can not display setting pages.","The new calendar types don't currently allow the addition of settings pages. For the standard Gregorian calendar this may be fine, but other calendar types may require certain settings to be configurable.",10 MDL-43010,"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,"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,"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,"The course_module_instances_list_viewed abstract class could be improved to do more.","See MDL-42962.",13 MDL-43058,"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,"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,"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,"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,"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,"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,"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,"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-43167,"Frontpage should support the same JavaScript as course pages","Frontpage should support the same JavaScript as course pages: * drag/drop * toolboxes",40 MDL-43171,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"Migrate moodle-course-dragdrop to use Shifter","Migrate moodle-course-dragdrop to use Shifter",5 MDL-43271,"Migrate moodle-course-formatchooser to use Shifter","Migrate moodle-course-formatchooser to use Shifter",5 MDL-43273,"Migrate moodle-course-coursebase to use Shifter","Migrate moodle-course-coursebase to use Shifter",5 MDL-43274,"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,"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,"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,"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,"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,"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,"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,"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,"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,"Migrate moodle-form-passwordunmask to use Shifter","Migrate moodle-form-passwordunmask to use Shifter",5 MDL-43306,"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,"Migrate moodle-mod_assign-history to use Shifter","Migrate moodle-mod_assign-history to use Shifter",5 MDL-43314,"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,"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,"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,"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-43326,"Cannot start a new attempt in Assignment (based on previous one)","Reported here and confirmed in 26 only: https://moodle.org/mod/forum/discuss.php?d=245445#p1065058",4 MDL-43330,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"cleanup PHPunit docs page linked from admin settings","* remove pear instructions * describe some more options * remove legacy migration info * etc.",2 MDL-43521,"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-43524,"Drop problematic global text caching","The trouble is that there is a bazillions of settings/options/conditions that may affect text filter outcomes - it is technically not possible to do a high performance caching at this level. Dropping the global text caching will fix multitude of issues at the same time: * JS handling * use of PAGE and OUTPUT * use of any other globals * easier resetting of local filter caches * etc. There are already static caches in most filters, which means this should not cause perf regressions on large sites - they were supposed to turn off this ugly feature already... The next step is to migrate individual filter caches to MUC (unless the perf overhead of MUC ",4 MDL-43525,"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,"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,"cleanup magic quotes stuff in 2.7","yay - magic quotes finally gone from PHP 5.4!!!",2 MDL-43529,"cleanup all references to register_globals in 2.7","yay - gone from PHP 5.4...",2 MDL-43537,"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-43556,"Rewrite comment JavaScript","Need to stop this from using YUI2 code, and fix some other issues. It's actually simpler to rewrite it than fix what's currently there.",20 MDL-43557,"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,"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,"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,"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,"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-43661,"rename event property level to edulevel","The problem is that ""level"" is a reserved word in SQL, we need something different to allow simple storage of event properties in DB tables...",4 MDL-43664,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"""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,"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,"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,"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,"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,"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,"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,"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,"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,"New Atto plugin Insert Character","Add an insert character plugin to atto.",13 MDL-43859,"New Atto plugin Insert Smiley","Add insert smiley plugin",8 MDL-43860,"New Atto plugin switch language LTR/RTL","Add a plugin for this (disabled by default?)",8 MDL-43861,"Plugins for font/background colours in Atto","Disabled by default. Accessibilty concerns around contrast. ",20 MDL-43862,"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,"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,"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,"Add a toolbar editor to Atto","Allow re-ordering and grouping buttons via an admin page.",3 MDL-43867,"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,"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,"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,"$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,"moodle-core-notification-confirm should treat [X] like 'Cancel'","It does not.",5 MDL-43886,"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,"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-43903,"prevent error log output from addodb during phpunit execution","The problem is in native mssql driver which turns on the logging by default, instead of hacking adodb we can just silence it during tests... This is caused by the following code in native ms sql driver in adodb: sqlsrv_log_set_subsystems(SQLSRV_LOG_SYSTEM_ALL);",4 MDL-43905,"incorrect code for updates of login times","during event migration the code updating user login times got borked - he $USER->timemodified and db state get out of sync; it is also painfully slow... {code} core_moodlelib_testcase::test_complete_user_login Time is lower that allowed start value Failed asserting that '1390980862' is equal to 1390980863 or is greater than 1390980863. /home/jerome/moodles/integration_master_mysqli/moodle/lib/phpunit/classes/advanced_testcase.php:393 /home/jerome/moodles/integration_master_mysqli/moodle/lib/tests/moodlelib_test.php:2473 /home/jerome/moodles/integration_master_mysqli/moodle/lib/phpunit/classes/advanced_testcase.php:80 {code} At the same time this code triggers extra user updated event right before user logged in event which is also not correct.",4 MDL-43911,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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-43999,"Atto: Double clicking on an image should open the image properties window","Atto: Double clicking on an image should open the file properties window",4 MDL-44000,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"Make the Atto equation editor example library into an aria toolbar.","This means manage the active descendant, keyboard navigation, tabindex etc. ",20 MDL-44149,"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,"Modal Dialogues cause a jump in page position",https://github.com/yui/yui3/pull/1636,8 MDL-44164,"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,"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,"Atto: Invert indent/outdent buttons","Invert indent/outdent buttons (inconsistent with any other editor). ",5 MDL-44217,"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,"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,"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,"Atto: Being able to set the alignment (flow) of the images","Being able to set the alignment (flow) of the images. ",13 MDL-44221,"Atto: Table plugin not adding a table on IE","Table plugin not adding a table on IE8/9",40 MDL-44222,"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,"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,"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,"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,"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,"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,"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,"Atto: Combine plugins indent/outdent into one.","Combine plugins indent/outdent into one. ",5 MDL-44241,"Atto: Combine plugins link/unlink into one","Combine plugins link/unlink into one. ",8 MDL-44243,"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-44298,"Add 'HTML templating' features to Atto text editor","Editing-teachers and non-editing teachers have the capacity to create HTML templates using the TinyMCE HTML templating feature (Moodle 2.4 to 2.6) Moodle 2.7 is set to have a new Atto text editor http://docs.moodle.org/dev/Editor_2.7 replace TinyMCE editor from Moodle 2.7 onwards. Is it possible to incorporate ""HTML templating"" as a feature in the Atto text editor to enable them to continue to use the HTML templating functionality. The following video demonstrates the TinyMCE ""HTML templating"" functionality Video - Moodle tinyMCE Editor 'HTML templates' and 'Font Awesome' icons (Moodle 2.4 to 2.6) http://youtu.be/5FUPRVwgKmo This video demonstrates the type of configuration features the Atto HTML templates would need to have. Video - Configuring Moodle tinyMCE Editor 'HTML templates' and 'Font Awesome' icons (Moodle 2.4 to 2.6) http://youtu.be/_gZVOlTaWUg Note: Example TinyMCE Configuration instructions to set up the feature are also included in the video summary. Note: Please refer to https://tracker.moodle.org/browse/MDL-38742 for prior discussion on the topic of HTML templating via the TinyMCE text editor.",100 MDL-44316,"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,"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,"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,"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,"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,"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,"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,"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,"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,"Atto is using deprecated features and modules","Just a quick commit to tidy these up.",3 MDL-44478,"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-44496,"buffer raw data instead of full events in log stores","The problem is that event contains references to snapshots and other large custom objects which consumes memory. Also we need to get the extra info such as origin before we put data into buffer because in theory it might change (such as possibly when doing restore in the future). Yet another problem is that we should not buffer events we do not want to store. hmm, and the patch actually reduces code duplication too...",4 MDL-44500,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"Make atto the default editor during upgrade","We do this for new installs, but should do so for ugrades too.",5 MDL-44749,"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,"Update showgroups string in atto_collapse","As discussed in the demo yesterday: {code} ""Show first (n) groups when collapsed."" {code}",2 MDL-44752,"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,"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,"Atto plugins are using different icons for the plugin / toolbar","Examples are the accessibility plugins - and some of the combined plugins. ",5 MDL-44756,"Atto collapse plugin setting help update","Change description to: ""Show first (n) groups when collapsed""",2 MDL-44757,"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,"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,"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,"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,"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,"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,"Atto image plugin - remove the word ""Preview"" from the dialogue.","It's unnecessary.",2 MDL-44764,"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,"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,"Atto: Save cursor position with undo/redo stack and restore it","This was a suggestion from Fred in the Atto demo.",40 MDL-44769,"Atto Table plugin caption field should be a text input, not a textarea",Simples.,3 MDL-44770,"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,"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,"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,"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-44775,"Atto : show html view with a monospace font","what it says",2 MDL-44776,"Make Atto equation editor dialogue wider ","just a bit (keep mobile in mind too please)",5 MDL-44777,"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,"Atto equation editor, put a border around the preview","What it says",2 MDL-44779,"MathJax menus show behind dialogues","This is most noticable in the Atto equation editor",13 MDL-44780,"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,"Reformat/rewrite the help text for MathJax (needs some line breaks) ","Reported by Andrew N",2 MDL-44782,"Fix lang string for Mathjax filter setting HTTP (Should be HTTPS)","What is says",2 MDL-44784,"Atto plugins with settings do not show settings links on manage plugins page.","Probably something to do with plugininfo.",20 MDL-44794,"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,"Accessibility checker goes wide unnecessarily ","It would be better if it adapted to the content better.",5 MDL-44808,"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,"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,"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,"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,"Atto: Insert image fails on iOS 7","Buy me and iPhone and i'll fix it :)",13 MDL-44830,"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-44831,"Atto: Save to undo stack on text deletion","The undo stack save is triggered by arrow keys and clicks on the content area. This is based on testing the native undo in chrome. We could possibly improve this to save the position when someone starts deleting things (but if they hit delete 15 times we should only save for the first one). We could do this by detecting that the new text is shorter than the previous text, save the stack and set a ""deleting"" flag. We would need to test the performance of this with a really long bit of text in a sucky browser (guess which). ",8 MDL-44832,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"Backup and restore of logs in 2.7 and above","New logging API does not support backup and restore of logs",100 MDL-45772,"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,"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,"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,"Create the element library admin tool","Implement the admin tool defined in MDL-45827",8 MDL-45829,"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,"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,"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,"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,"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,"Convert existing displays to renderers","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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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-46058,"Include YUI -proxy modules in rollup","As raised in https://moodle.org/mod/forum/post.php?reply=1136723#mformforum, some ISPs do insane and antiquated blocking based on keyword. I suspect we'll see this in places such as Syria, Iran, China, North Korea, etc. To help the users in those locations, we can include the proxy modules in the rollup such that they are no longer blocked and more (hopefully all) of the JS works.",3 MDL-46059,"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,"Event monitor: Create a class to generate eventlist","Create a class to find and list all events with caching",13 MDL-46110,"Event monitor: Create renderables/renderers to display the rule managment page","Write a renderer to display rule management interface.",20 MDL-46111,"Event monitor: Create renderables/renderers to display the subscription managment page","Write a renderer to display subscription management interface.",40 MDL-46118,"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,"Event monitor: Handle creating/deleting subscriptions","Write a renderer to display subscription management interface.",13 MDL-46130,"Event monitor: Handle rule managment","Write yui modules to handle the managment of rules # Deleting a rule # copying a rule",8 MDL-46131,"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,"Event monitor: Implement the event observer","Implement an event observer that populates tool_monitor_events, as needed",40 MDL-46133,"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,"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,"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,"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-46181,"Usability improvements for grade export and import","Export # Have a quickdump to csv that takes no parameters and can be optionally linked to the Grader report -- Would contain a row of weights and a row of maximum points -- Would contain a blank row after each category for teacher calculations -- Add support for letter grades as well: MDL-44447 Import # Excel paste -- Can import data via copy/paste from Excel (text field entry option, instead of file) -- Saves trouble of saving file as csv and then importing # CSV file preview (UCSB) -- Not user friendly right now, but is resilient -- Gives preview of parsed file input and allows mapping of data from file to Moodle fields -- On submit, gives “preview�? and diagnosis data --- Lets user know about “potential updates�? --- Errors and tells user why (invalid student, invalid grade) --- Duplicate scores are skipped -- Then can continue with import --- Moodle.org decided to only allow full/perfect imports, because importing of half data can leave user confused/lost # Idea: Have data in a table and allow user to fix data right there. ",100 MDL-46191,"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,"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,"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,"Event monitor: Create a subscription instance class","Create a class that represents a subscription instance",5 MDL-46248,"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,"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,"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-46269,"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.",100 MDL-46285,"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,"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,"Fix coding style problems in notes","code checker currently reports 50 errors and 103 warnings just in notes.",5 MDL-46346,"coding style problems in blog","Originally noted in MDL-46218. There are lots of coding style issues in blog.",5 MDL-46352,"Deprecate print_group_picture","To support ongoing forum work (MDL-45862), {{print_group_picture}} is being deprecated in favour of a helper + renderable + renderer solution in the output library.",5 MDL-46401,"Use cohorts to restrict display of course categories and set themes","Problem: some Moodle users, such as large organisations with many departments, would like to have one Moodle but set it up so that each user only sees the courses from their own department, and with a theme that matches their department. A simple solution: Use cohorts to represent the departments, and allow each cohort to be mapped to one course category and one theme. Then, once a user has logged in, we know which cohorts they are in, and this which categories they are allowed in, and then we restrict the entire course tree to just show those categories (and anything inside them). If there is just one category then we could further refine this by leaving out the name of the category and putting the contents of it at the top level. There don't have to be any further changes in enrolments, and if the user is also enrolled in any courses outside this category then these courses will simply appear in the list of My courses at the top level. Additionally, if they are in just ONE cohort (or all their cohorts have the same theme) we also set the theme to match (this cohort theme setting overrides all other theme settings). (Thanks to Andrea Bicciolo at Mediatouch for the idea - he estimated it would be suitable for 80% of his clients who want ""multi-tenancy"" in Moodle)",100 MDL-46409,"Event monitor: Consolidate and increase unit tests for the tool","A number of Behat and phpUnit tests have already been incorporated into Event Monitor. This issue is to review the existing unit tests and to add additional tests for greater coverage.",40 MDL-46410,"Event monitor: Implement a notification sent history report","Write a page to display a report of notifications sent",40 MDL-46455,"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,"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,"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,"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,"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,"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,"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-46549,"Robust previewing + update dry running for importing grade CSVs","Integrate UCSB's CSV file preview functionality - gives preview of parsed file input and allows mapping of data from file to Moodle fields. When submitted, it provides diagnosis data about: * ""potential updates"", i.e. when importing a CSV will change existing grades * errors and underlying reasons It should also skip duplicate scores. Further detail - these are the strings being introduced for further detail: * '{$a->name} not found in system mapped to {$a->key}' * 'student {$a->name} not found in group {$a->key}' * 'invalid grade for {$a}' * 'missing grade for {$a}' * 'invalid scale value for {$a}' * 'invalid grade value for {$a}' * 'grade exceeds item max ({$a->name}) for {$a->key}' * 'duplicate grade for {$a->name} from {$a->key} to {$a->key2}' * 'changing grade for {$a->name} from {$a->key} to {$a->key2}' * 'adding grade for {$a->name} as {$a->key}' * 'Warning: Accepted grade exceeds Item Maximum' * 'Error: Grade exceeds Item Maximum' * 'Error: Grade score bypassed - Locked grade' * 'Error: Grade score bypassed - No grade' * 'Error: Grade score bypassed - Invalid grade' * 'Error: Grade score bypassed - Invalid group' * 'Error: Grade score bypassed - Invalid student' * 'Warning: Grade score bypassed - Duplicate score skipped' Other messages * likely used the wrong delimiter * Non numeric grade value supplied, possibly mapped wrong column. ",40 MDL-46567,"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,"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,"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,"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,"Write Unit Tests for the history report","Write Unit Tests to ensure that the queries are returning the expected result.",20 MDL-46572,"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,"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,"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,"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-46577,"Restructure Unit tests for gradebook aggregation, include natural weight","Some tests will need to be added, based 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"". For developers who are unclear on how this new functionality works, the new unit tests should be there to explain in detail what is going on. vendor/bin/phpunit --testsuite core_grade_testsuite Relevant tests that will need to be looked at and upgraded: * lib/grade/tests * grade/tests * grade/grading/tests",40 MDL-46578,"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,"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,"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-46598,"Robust handling of bad grade import data","If data in a column being imported has a bad value, like a letter “A�?, the import can fail in two different ways. If the instructor maps the column in the data to an existing grade item, we just need better diagnostic message. IF the instructor maps the column to a “NEW GRADE ITEM�?, the import fails with a database error.",13 MDL-46599,"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,"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,"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-46603,"Improve grade_scale class to support mapping to/from points and menu generation.","The way scales are implemented currently (Moodle 2.7) is that the activity modules each re-implement the logic of retrieving a list of scale items for a given scale and creating a menu from it. The chosen item is then pushed to the gradebook via the ""grade_update"" method where the grade_item in the gradebook identifies the scale in use. It would be much better if there was a single function responsible for creating a form element that represents a scale. There are other bits of scales logic hard coded in modules such as getting the min and max for a scale, converting a scale item to a points value, getting a list of scale items, getting a normalized grade from a scale item and getting the closest scale item to a value specified in points. We should extend grade_scale from the ""grade"" api to encapsulate all this logic. This API needs unit tests.",20 MDL-46604,"Allow custom mappings of scale items -> points","An extra column will need to the added to the scales table to (optionally) store a mapping of scale items to points. This column will need to be used when converting a raw scale item to a normalised, bounded value for the gradebook finalgrade. (see grade_item::bounded_grade). A ""nice"" ui needs to be made to edit these mappings. These custom mappings need unit tests.",20 MDL-46605,"Remove custom scales logic from modules.","Modules need to replace their manual scales logic with some calls to the scales (grade) API. Very few modules actually directly use scales. ",8 MDL-46606,"Review use of scales in workshop.","Workshop has custom scales logic for calculating the average of several scales. This should be replaces with an API call. This logic converts scale items to a 0 based index before calculating the average - the reason for this this needs to be understood before we decide how it is to be handled.",13 MDL-46607,"Update advanced grading methods to support new scales mapping.","1. New method will be added to controller to specify particular scale used in the module. 2. Function get_grade() in advanced grading plugins must be amended to correctly map the grade to an item in a scale. 3. Modules supporting Advanced grading (only mod_assign atm) should tell about the scale used to the advanced grading controller (see below)",20 MDL-46608,"Add an admin setting to make the use of a particular scale the ""default"" for all grading things (gradebook columns, activities etc).","Wherever print_grade_menu is used (or the equivalent of it). ",5 MDL-46609,"Create an easy way to configure grade letters matching an existing scale. ","This would be a convenience when you want to sometimes use scales for grading and sometimes points, but you always want the result in letters (and vice-versa?).",13 MDL-46646,"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,"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-46658,"Prepare and integrate grader code from UCLA","UCLA have submitted some code for an updated view of the gradebook and it looks that we may accept this into core. It still needs a little bit of work as part of this issue including: * Merge existing commits where relevant * Update to meet coding style guidelines (Primarily JS) * Move hardcoded styles to css * Check SASS and produce a definitive CSS/Less set (as appropriate) and remove SASS files again There may be more...",100 MDL-46661,"Add dynamic loading of content","This will likely require: * the removal of existing pagination (JS only?) * changing the model for existing content * keeping track of the fields already loaded When writing this, we need to also consider the related functionality (but this probably needs to come first): * dynamic searching * dynamic sorting",40 MDL-46662,"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,"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,"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,"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,"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-46732,"Review and move AJAX grading code to YUI module","We have an AJAX interface for updating grades in the gradebook, but it's off by default and it's also pretty buggy. [~johno] has started looking at it, the issues currently surrounding it, and is trying establish whether we want to enable this by default and move it into the YUI module. This is currently exploratory work and we'll need to discuss whether this is something we want enabled by default, or whether it will lead to overridden grades too frequently. https://docs.moodle.org/dev/Grader_report_2014#Main_display",40 MDL-46736,"Handle grades associated with deleted grade items in the history report","The query getting all the grades joins on grade_item to filter on course ID. Whenever a grade item is not found, the course ID would be considered as null and thus not being used. We need to update the SQL query to handle the deleted grade items, possibly by joining on the grade_item_history table rather than the grade_item one. {code} $ git grep MDL-46736 grade/report/history/tests/report_test.php: // TODO MDL-46736 Handle deleted/non-existing grade items. {code}",20 MDL-46748,"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,"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,"Migrate row/column highlight code to YUI module","Reduce code duplication, improve performance reduce number of event handlers.",5 MDL-46777,"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,"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,"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,"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,"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,"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,"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,"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-46825,"Allow categories to be collapsed in the Gradebook setup page","The setup page(s) for the gradebook can get long and complicated when there are numerous grade items and categories. One way of potentially reducing the complexity is by allowing the categories to be collapsed on this page, much like settings pages allow sections of settings to be collapsed.",40 MDL-46827,"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,"Grade export does not support grade display type anymore","The format of grade is now ignored.",2 MDL-46862,"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,"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,"Publish prototype and publicise","Publish prototype and publicise",8 MDL-46902,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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-47022,"Implement ""Export since"" filter on grade export","The current grade export feature does not have a way to filter the results by date. While working on MDL-46599 we found the necessity of create a new filter by date and time, in order to fix this bug properly. The main concept is allow users to export grades from a past date to now, and save the last export date for further reference. Another benefit of this new feature would be standardize all export formats (OpenDocument, Plain Text, Excel and XML). We're still considering about the possibility of replace the *Export new or updated grades only* by this date filter. However this could turn this issue too expensive because the XML structure is different of other export formats and is being used by OU and it rely on a config: *gradeexport*. ",40 MDL-47025,"Fix highlighting behaviour in the new grader report","It does not appear to work any more, probably due to recent changes.",5 MDL-47026,"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,"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-47045,"Bring in code from UCLA","Just a stub task to bring the code from UCLA into the working branch.",20 MDL-47046,"Update code from UCLA to meet coding style guidelines","Another stub issue to get issues against the actual work body.",40 MDL-47053,"Add floating title for the footer","When scrolling right, the title for the footer needs to float hard too.",8 MDL-47055,"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,"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,"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,"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,"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,"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,"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,"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,"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-47127,"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,"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,"Review third party libraries for new versions","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,"Event monitor: Write behat tests for the tool","Write behat tests for the tool",20 MDL-47149,"Event monitor: Write QA tests for the tool","Write QA tests for the tool",20 MDL-47152,"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,"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,"Event monitor: Remove dependency on MDL-46155","Either remove dependency on MDL-46155, or get MDL-46155 integrated",13 MDL-47242,"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,"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,"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,"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,"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,"Backup / restore aggregationcoef2 and weightoverride","The aggregationcoef2 needs to be backed up when a course using it is backed up.",5 MDL-47255,"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,"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-47280,"Include YUI gallery modules properly","As per topic.",3 MDL-47294,"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,"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-47297,"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,"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,"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,"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-47307,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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-49519,"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,"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,"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,"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-49528,"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,"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,"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-50051,"Make sure all functions in lib/deprecatedlib.php have debugging message","Go through all functions in lib/deprecatedlib.php and make sure they all: * display developer debugging message * have {{@deprecated since X.X}} phpdocs token If some functions do not do any of that, add {{@deprecated since 3.0}} and debugging message. AFAIK some of functions are still used in Moodle. *Make sure to grep* !",3 MDL-50182,"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,"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,"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,"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,"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.",13 MDL-50482,"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,"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,"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,"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,"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,"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,"Create workflow for requesting approval, and approving draft learning plans.",https://docs.moodle.org/dev/Competency_Based_Education#User_learning_plans,1 MDL-51036,"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,"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,"Create a statistics report for a learning plan template",https://docs.moodle.org/dev/images_dev/2/2a/cbe_spec13.jpg,5 MDL-51045,"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,"Deleting frameworks should delete associated data","Currently deleting a framework leaves orphan competencies behind.",3 MDL-51233,"Remove unused ID number from learning plan templates","See discussion in MDL-51027.",1 MDL-51442,"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,"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.",1 MDL-51504,"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,"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,"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,"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.",3 MDL-51557,"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",1 MDL-51580,"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,"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,"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,"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,"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,"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 ",1 MDL-51646,"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,"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,"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-51735,"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,"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,"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,"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-51862,"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,"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,"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,"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}",1 MDL-51942,"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.",1 MDL-51953,"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.",1 MDL-51962,"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,"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,"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,"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,"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-52062,"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,"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,"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,"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,"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,"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.",1 MDL-52235,"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. ",1 MDL-52242,"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,"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"".",1 MDL-52282,"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,"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,"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.",1 MDL-52423,"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,"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,"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,"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,"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*",1 MDL-52485,"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?",1 MDL-52561,"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.",1 MDL-52675,"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.",3 MDL-52676,"When deleting a template delete associated template_cohorts","Deleting a template should not leave template_cohorts behind.",1 MDL-52690,"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.",1 MDL-52696,"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",1 MDL-52709,"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,"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.",2 MDL-52711,"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.",3 MDL-52712,"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.",2 MDL-52713,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"Add confirmation dialogue when removing a competency from a course","As the summary says.",1 MDL-52861,"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,"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,"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,"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,"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,"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.",1 MDL-53084,"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,"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,"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 ",1 MDL-53162,"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,"Behat tests for plans workflow","- request review - cancel review - start review - finish review - make active - move to draft - complete plan - ....",3 MDL-53182,"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,"Big button to turn CBE on/off.","One setting to rule them all",3 MDL-53186,"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,"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,"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,"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,"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,"Rebase CBE to latest Moodle core","Fred needs to rebase CBE...",2 MDL-53193,"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,"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,"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,"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,"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-54751,"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,"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-54796,"Cannot switch between students in assignment grading interface","_Reproduced with Firefox, not with Chrome._ # Set Atto autosave frequency to 10 seconds # Go to an assignment with participants # Open the grader # Type some text in the feedback and wait for Atto to save the draft # Try to switch to another user # You are warned of unsaved changes, do not save # Click _Reset_ at the bottom of the page # Try to switch to another user *Expected* - Respect the same behaviour as Chrome, the view switches to the new user *Actual* - The same message as earlier warns you about unsaved changes, you cannot leave the page.",4 MDL-54847,"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-54915,"Rendering concurrent Mustache templates with strings loses javascript","Using client-side rendering of multiple templates at once can cause any {{#js}} blocks in those templates to be lost, if the template needs to fetch language strings from the server. This is because there is a single shared templates module with global state containing the required javascript additions, and it is reset on every call to render(). *To reproduce:* * Create a plugin in {{local}} called mustacheproblems. * Create a template called {{problem.mustache}} {code:html} {{! @template local_mustacheproblems/problem Example context (json): {} }}
    This is a template whose {{#str}} javascript, local_mustacheproblems {{/str}} has not been run
    {{#js}} require(['jquery'], function($) { $('#some-span-{{uniqid}}').html('has been run'); }) {{/js}} {code} * Create a second template called {{problems.mustache}} {code:html} {{! @template local_mustacheproblems/problems Example context (json): {} }}
    {{#js}} require(['jquery', 'core/templates'], function($, Templates) { for(var i = 0; i < 5; i++) { var promise = Templates.render('local_mustacheproblems/problem', {}); promise.done(function(html, js) { $('#problems-{{uniqid}}').append(html); Templates.runTemplateJS(js); }); } }); {{/js}} {code} * Add the following strings to the {{lang/en/local_mustacheproblems.php}} {code:php} $string['pluginname'] = 'Mustache problems'; $string['javascript'] = 'Javascript'; {code} * View local_mustacheproblems/problems in the Template Library *Expected result:* All five divs should read ""Javascript has been run"" *Actual result:* Only the last div reads ""Javascript has been run"". If you select the template again, then with the required language string cached, all five divs read ""Javascript has been run"". *Notes:* I have marked this as 2.9.6 because that's the only system I've tested it on, however looking at the code for master shows that the bug is still present. ",4 MDL-54984,"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,"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-55066,"Create a script to compare all grades for a 57% letter boundary problem.","Currently the upgrade step for checking if a course should be frozen with a 57%letter boundary problem only checks if the course has the potential that grades will be affected. It does not check individual grades to see if they are affected. It's quite possible that courses will be flagged as frozen when they do not need to be. This task is to create a script that can be used to check each grade and ensure that the course will only be frozen if there will definitely be a grade change.",2 MDL-55126,"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-55173,"Forum final deprecations to 2.8","Perform final deprecations for all forum functions deprecated up to, and including, Moodle 2.8.",1