Files
School/Anul 3/Semestrul 1/Proiect Colectiv/StoryPointEstimator/data/moodle.csv
T
2025-02-06 20:33:26 +02:00

636 KiB

1issuekeytitledescriptionstorypoint
2MDL-1626Forum: Per-discussion subscriptionI 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
3MDL-3714Forum: Reply by e-mailHow about the ability to post to the forums via email?100
4MDL-5583allow teachers to specify certain fields in database activity as requiredWhen creating a database, allow the teacher to specify whether a field must be filled in or not.20
5MDL-8501Forum: proceed to next thread linkPlease 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
6MDL-10115A use profile's course list is arbitarily limited with no way of seeing complete listWhen 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
7MDL-12403backup or import of single quiz includes all questions in databaseWhen 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
8MDL-13114Include bulk course create and remove with Moodle through the use of CSV filesWe'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
9MDL-16073Add "test database setup" to the "External Database" enrollment and authentication pluginsIt 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
10MDL-16474Allow single-item scalesThe 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
11MDL-16982Adding data mapping for custom user fieldsI'd like having the possibility to add data mapping for custom user fields when I use LDAP or DB auth modules40
12MDL-17081Implement import/export "Permissions" settings for "Manage roles" tabSuggest 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
13MDL-18014Automatically and periodically save WYSIWYG editor content as a draft/conceptThis 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
14MDL-18229Add grade item and student grades quick edit feature to the grader reportAdd 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
15MDL-18375Displaying and selecting dates throughout Moodle should allow the use of multiple calendarsI 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 post100
16MDL-18633User profile: add last ip field to user viewSimilar 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 - Anthony2
17MDL-18770Non-graded Assignment and Quizzes appear in the gradebook and have Max Grade assignedNon-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
18MDL-20045Add unofficial support for custom context levelsThis 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
19MDL-20250Add admin settings for disabling particular gradebook calculations, category overriding and grade minimum on the grader reportAn 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
20MDL-21180Category children default to extra credit when category agg is switched from Weighted to SimpleCategory 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
21MDL-21415Course Participation Report doesn't abide by separate groupsIn 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
22MDL-21469Chat window uses browser language rather than preferred language set in profileSteps 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 Dutch3
23MDL-22236Design 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
24MDL-22669Moodle bug with course restore section countCourse 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
25MDL-23646TinyMCE can't be resized and doesn't scroll for wide content, especially on small screensWhen 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
26MDL-24120Allow admin to remain logged in after login as procedurelog 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 out20
27MDL-24287Convert 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 Sam13
28MDL-24343Properly deprecate unzip_file/zip_fileSam - 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 up3
29MDL-24380Chat: 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
30MDL-24775a pagedown key press in any tinymce editor destroys entire page layouta page down in any tinymce editor will kill the layout of (maybe almost) any page in moodle. 20
31MDL-25473Embedded MP4 videos via linking to the course file loops when finished playing.When I embed a QuickTime video (MP4) like this: {code} <a href="http://mymoodlesite.org/file.php/#/videos/Video_Title.mp4?d=800x450"></a> {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} <param name="loop" value="false" /> {code} The video stopped after playing once. 5
32MDL-25544Improve Grader report user interfaceThis 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
33MDL-26170Deleted Forum & Blog Posts in RSS BlockIn 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
34MDL-26244'Choose a link' for database URL field gives confusing messageGoing 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
35MDL-26408IMS 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-&gt;cron() * line 79 of /admin/cron.php: call to cron_run() !! Does look like any db/messages.php 2
36MDL-27158Default timezone is incorrect when not set in PHP configurationWhen '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
37MDL-27339The link Create "File system" instance do not workif 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
38MDL-27953Upload users option only allow the following authentication options: Manual account, or No loginWhen 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
39MDL-28162[ERROR] Automated backup statusUsing 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
40MDL-28448Teachers cannot delete user submissions - advanced uploading of filesIn 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
41MDL-28631forbid use of cookies especially from javascriptOur 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 docs40
42MDL-29070Clean enrol_imsenterprise following coding guidelinesWhile 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
43MDL-29441Chat window does not pop up for separate groups in IE7-9Using 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 chat4
44MDL-30195Export forum discussion without attachments to google docs portfolioWe'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
45MDL-30431Attempting 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 happily13
46MDL-30668Prevent the grader report from storing serialized data in the user_preferences tableSee 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
47MDL-30812Latest backup files generate error/setting_invalid_ui_label upon restoreAdministrators 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
48MDL-30839form validation and error recoveryA 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
49MDL-30852user report grade view has inaccessible tableThe 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#id8
50MDL-30895provide easier chat reading for screen reader users in accessible chat activityWhile 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
51MDL-31089New 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
52MDL-31356IMS Enterprise enrol plugin added featuresI'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
53MDL-31379Introduce new grading fields - dategraded and datesubmittedWe 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
54MDL-31410PayPal IPN Script exposed to message_send() failureThe 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
55MDL-31501New 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
56MDL-31560New 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 <noreply@moodle.org> - for example when a forum poster has decided they want to keep their email private; or * Quiz system <noreply@moodle.org> - 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
57MDL-31597In User Report, Weights should not be displayed as a percentageWhen 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
58MDL-31625Overfilling DB entries with a replace causes errorIf 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
59MDL-31776Additional name fields, to allow Asian languages to flexibly display user names in Chinese characters, local phonetic system or Romanizationh3. 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
60MDL-31830Replacement for the course and category management pagesThis 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
61MDL-31989Global Search 2Global 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_search20
62MDL-32275enrol/users.php shows last access to the platform but not last access to the courseThe 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
63MDL-32450DragMath GPL issueDragMath 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
64MDL-32570Deleting "Miscellaneous" category broke the ability to use IMS Enterprise to create coursesWe 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.52
65MDL-32592Category Undefined in IMS EnterpriseHi 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
66MDL-32746User login - trigger eventWould 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
67MDL-32862Links to some 1.9 resource types break after upgrade to 2.2 followed by backup and restoreSteps 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
68MDL-32917Upgrade dateselector to use YUI3 calendar moduleThe 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
69MDL-33057Rewrite 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 Sam100
70MDL-33343Unable to create a new page in wikiThis 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
71MDL-33600There is no checkbox to control sending feedback when grading an assignmentPreviously 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
72MDL-33618A way to hide messages that were configured to never be sentA 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
73MDL-33741Teacher 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
74MDL-34055Database function for fast bulk insertsWhen 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
75MDL-34161Fix LTI backup and restore to support course and site tools and submissionsWhile 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
76MDL-34182Invalid JSON output on filepicker when repository plugins output invalid contentI 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 '<h1>Return Data</h1>'; var_dump($ret); echo '<h1>Info</h1>'; var_dump($this->info); echo '<h1>Error</h1>'; 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 Kersting8
77MDL-34209Moving sections by drag and drop causes the sections to be reorderedWhen 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
78MDL-34248Restoring a course fails at mdl_log insertWhen 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
79MDL-34321Assignment 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
80MDL-34356Allow the chooser dialogue to submit values for the radio buttonThis 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
81MDL-34397Develop course structure cachingThe 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
82MDL-34426Port Google/Facebook Oauth2 plugin into corePort http://moodle.org/plugins/view.php?plugin=auth_googleoauth2 to core Specification: http://docs.moodle.org/dev/Oauth2_authentication20
83MDL-34432Assignment -teachers can no longer comment inline on online textIn 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
84MDL-34434META: Collect together deprecated code changes for Moodle 2.6There 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
85MDL-34454remove message_get_my_providers() from lib/messagelib.phpmessage_get_my_providers() has been deprecated since 2.1 and can be removed any time after 2.51
86MDL-34472Add deprecate warning to get_context_instance() functionAdd deprecate warning to get_context_instance() function3
87MDL-34496issue(s) with custom block regionsThere 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
88MDL-34587Filenames w/ Spaces Generating incorrect SHA1I 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
89MDL-34684Adding a new health check to detect incorrect category path order and/or missing parent categoriesSome 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} <?php require_once('config.php'); echo 'Starting fix_course_sortorder()...'; fix_course_sortorder(); echo 'done'; {code} Summary and description edited, original summary was: *Category path order is incorrect and/or there are missing categories*20
90MDL-34744MSSQL backup fails under some circumstancesWe encountered the problem when our automated backups weren't running properly; they'd get stuck part way through. Trying to backup the courses the auto backup got stuck at gave us the same problem. Certain big courses (in the sense of lots of resources, not filesize) don't backup up properly either manually or through the automated system. The backup process just ran until it gets a fastcgi error. We tried to see if we could narrow it down to particular types of resources, but that wasn't it. As an example, one course which wouldn't backup had a category level question bank with 1000+ questions. I did a lot of unsuccessful troubleshooting, which I've not reported-- here's where we're at now, hopefully it's useful to someone. Please note that the changes I detail below are NOT A FIX, they were done for troubleshooting, using them in production introduces other problems: Tracing the backup process we found the problem would always occur in the backup_structure_dbops.class.php file in the function move_annotations_to_final($backupid, $itemname) within the $DB->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<br> Error Code: 0<br> Message: [Microsoft][SQL Server Native Client 10.0]Query timeout expired<br> 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
91MDL-35009Deprecate 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 Thanks1
92MDL-35024META: Collect together deprecated code changes for Moodle 2.7There 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
93MDL-35032book restore from moodle 1.9: Images are not importedA 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
94MDL-35146Restore of wiki fails with unique constraint violationIn 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
95MDL-35423Activity chooser links and toolbox links not correctly created if you don't have a wrapper div called #page-contentThe 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
96MDL-35848Login 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 page8
97MDL-35919Add 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&notifyeditingon=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
98MDL-35922Create 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 reader3
99MDL-35923Create 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
100MDL-35925Add... 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 reader13
101MDL-35926Add.. 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
102MDL-35927Add... 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 appears2
103MDL-35928File 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
104MDL-35930Filepicker 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 appears8
105MDL-35931Filepicker 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 changes8
106MDL-35933File 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 submissions2
107MDL-35934File 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 appears8
108MDL-35973Moodle 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
109MDL-35981Comment 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 appear3
110MDL-35984Gradebook Sum of grades shows wrong total if items are hiddenWhen 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
111MDL-36002Move 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&notifyeditingon=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
112MDL-36003Add event/logging when student views gradesThere 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
113MDL-36005Forms 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
114MDL-36009Gradebook 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 readers20
115MDL-36011flexible 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
116MDL-36034pre-cache active filters for course categories to significantly reduce database queriesOn 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
117MDL-36063Extra credit boxes checked when switching aggregation methodsThis 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
118MDL-36081Video 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
119MDL-36082User 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
120MDL-36088Adding/modifying questions to/in the question bank is not loggedAdding 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_created40
121MDL-36126Error restoring a Moodle 1.9.x course to Moodle 2.x due to long filenamesWhile 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
122MDL-36175Moving 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
123MDL-36334Add support for selected gallery modulesWe 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 defines20
124MDL-41935Prevent false-positive failures due to time differencesSome 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 <string:internal_set_data> 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:645
125MDL-36404Make 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
126MDL-36460Forced/Auto forums list all potential subscribers and ignore completion/availability infoWhen 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 (<your moodle address>/admin/cron.php) Expected: Only members of the grouping receive emails Actual: All members in the course receive emails.13
127MDL-36803TinyMCE editor doesn't accept keyboard input on iOS6 after touch eventWe'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 content20
128MDL-36836Alfresco 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
129MDL-36847Prevent inaccurate feedback notifications where grade item hiddenIf 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
130MDL-36984Assignment module should redirect after form submissionsAfter 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
131MDL-37016 null event.uuid's discovered when upgrading to Moodle 2.4When 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
132MDL-37023Dock JS incorrectly parses region IDM.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
133MDL-37145Documentation for caching admin screensWe 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=21719540
134MDL-37148More webservices for AssignmentAfter 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
135MDL-37181Backups 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
136MDL-37243Comments API doesn't store or validate componentThe 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
137MDL-37312restore always removes course idnumberThis 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
138MDL-37324Import phpmailer 5.2.7see https://github.com/Synchro/PHPMailer/blob/master/changelog.md2
139MDL-37528Ajax 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
140MDL-37565Better looking tinymce editor: toggle toolbars between 1 and 3 linesI 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
141MDL-37679When 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
142MDL-37717add 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
143MDL-37812admin can set site-wide default settings for user profile fields: Email display, format, digest, Forum subscription & tracking, use HTML editor, Screen readerI 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
144MDL-37813$CFG->stringfilters do not get updated during upgrade or when a filter is deletedOn 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
145MDL-37824Navigation 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
146MDL-37877Over-large backups fail transparently, then do not get deleted next time, so space fills upThis 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
147MDL-37972Assignment (2.2) "Upload Single" settings submission file link does not workIn 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
148MDL-38228Major Performance Problem with "Moving Modules" upgrade stepThe 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
149MDL-38325maximise/minimise button to hide the lateral blocks/dockIt 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
150MDL-38347Left and right arrows for calendar not showing up on AndroidThe 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
151MDL-38561Convert filepickers and filemanagers to YUI modulesThese 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
152MDL-38628New Assignment Module - Gives learners the top grade in a scaleCreate 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
153MDL-38664Lesson essays "disappear" if new attempt after exitingSee 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. Joseph8
154MDL-38693WYSIWYG Editor cuts off content in full screen modeThe WYSIWYG Editor cuts off (left side) content when you toggle to full screen mode when there are blocks docked.8
155MDL-38698Convert 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
156MDL-38732Graded course activity while editing gradebook causes unintentional overridesIf 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
157MDL-38758Undefined variable: sillybyrefvar in mod/forum/backup/moodle2/restore_forum_stepslib.phpWhile 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
158MDL-38768Coding error "The theme has already been set up for this page ready for output" when adding blog entry to a page resourceWhen 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
159MDL-38771$CFG->yuicomboloading prevents use of yui_combo.phpIt should stop use combo loading, but not yui_combo.php otherwise we have the potential to break caching.5
160MDL-38780Unread Posts listing on 'My Moodle' should take care of groupsCopying 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
161MDL-38827If "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
162MDL-38832Remove unused FRONTPAGE* constantsRemove constants described in /course/lib.php that are not used since 2.5: FRONTPAGECOURSELIST, FRONTPAGETOPICONLY, FRONTPAGECOURSELIMIT2
163MDL-38868Web Services returns empty array when permissions are invalid for 'core_user_get_users_by_id' requestWhen 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
164MDL-38903File manager form elements sizeWhen adding a file to a file manager the size of the form elements seems a bit weird100
165MDL-38923Cannot dock blocks with Bootstrapbase/clean themeI 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
166MDL-39001Unenroling and re-enrolling student causes inconsistent grade dataWhen 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
167MDL-39044Replace strtolower in block/completionstatus with textlib::strtolowerNeeds to be multibyte safe.2
168MDL-39150Finish detailed specification http://docs.moodle.org/dev/Logging_2First 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
169MDL-39152core_role_assign_roles ws function contains contextid as parameter, which is not correctAs 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
170MDL-39153core_roles_unassign_roles ws function contains contextid as parameters, which is not correctAs 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
171MDL-39154core_files_get_files, core_files_upload_files ws functions contain context as parameter, which is not correctCreating 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
172MDL-39227SCORM navigation panel is hidden when bootstrap theme is active# Try accessing a scorm with bootstrap theme. # No navigation panel is shown.5
173MDL-39299CSS 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
174MDL-39350Collapsible editor tab can't be controlled via keyboardThe 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
175MDL-39393Changing activity title on course front page with AJAX does not fire mod_updated eventWhen 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
176MDL-39569Second student can't confirm assignment submissionCreate 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
177MDL-39603Search 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
178MDL-39608Width thresholds for form labels in the Clean Theme need to be higher.The changes in MDL-39158 push the file picker out of place3
179MDL-39653IMS Enterprise CRON job errorMoodle 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
180MDL-39661theme_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
181MDL-39675Text overlap in HTMLEditor in Bootstrap themeAdd 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
182MDL-39715Mobile-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
183MDL-39736SCORM content section is too narrow on narrow screen deviceson devices <960px wide, there is not enough space to display the whole SCORM panel.20
184MDL-39737SCORM does not reflow on resize/orientation changeWhen using a mobile device, swapping from landscape to portrait does not cause the SCORM panel to resize20
185MDL-39746On discussion page, user name is overlapping with profile pictureThis occurs in iPod touch/iPhone4s potrait view.5
186MDL-39748Make 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
187MDL-39749Popup as File picker/Activity chooser should be mobile friendlyAt 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
188MDL-39750Fullscreen activity chooser on tablet screensThe 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
189MDL-39769taking photos via file picker results in a huge sideways photoWhile 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
190MDL-39770The chat activity window is poorly suited to a phoneIt 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
191MDL-39771Embedded URL resource doesnt seem to load on an iphone 3gsI 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
192MDL-39776Adding 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
193MDL-39779Fix alignment for required field (red *) on creating new wiki pageOn mobile device, the "required field" indication is displayed above the input options.3
194MDL-39782Clean - 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
195MDL-39792Editor goes under right-hand blocks on smaller screensAttached screenshot shows the problem on 2.5 theme on imoot.org We need a solution for this folks.20
196MDL-39794When 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
197MDL-39796Multiple select options displays as empty boxSamsung 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
198MDL-39812Long Breadcrumbs get wrapped on narrow screens when using Clean ThemeThe bread crumbs do not wrap nicely20
199MDL-39813Login page is overly verbose for a mobile deviceWe could either hide some of the text, or redesign the page completely.3
200MDL-39814Improve editing icons for usability on all types of screensEditing 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
201MDL-39815Printer-friendly version link can be improvedWould 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
202MDL-39817Grading is not mobile friendlysmaller screens have a really long scroll before you can start to move horizontally, then a big scroll back to the area you wanted to see100
203MDL-39844Define and implement the event base classDefine the base class for the event system. http://docs.moodle.org/dev/Event_2#Stage_120
204MDL-39845Define the new observers APIhttp://docs.moodle.org/dev/Event_2#Stage_1 Describe new observer definition - just few new flags in current db/events.php20
205MDL-39846Define new event dispatcher behaviour and implement it1/ Describe new event dispatcher http://docs.moodle.org/dev/Event_2#Stage_1 2/ Implement new event dispatching 3/ Add phpunit support for event observation20
206MDL-39848Check coverage of unit tests for new events APIWrite 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_15
207MDL-39850Pre and post performance profilingDecide and implement performance tests, to measure the impact of the changes.5
208MDL-39851Full 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
209MDL-39854Automatic class loadingIt 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_Proposal40
210MDL-39873check usage of class_exists to avoid usage of autoloadingCurrently 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.php5
211MDL-39883Duplicating activity on course page does not fire any eventI 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
212MDL-39884Improvement: 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. Ralf13
213MDL-39888Replace usages of the log table in auth/mnet/auth.phpSee [usages|http://docs.moodle.org/dev/Logging_usage#auth.2Fmnet.2Fauth.php].20
214MDL-39933Implement external database log storage pluginImplement external database log storage. It should be possible to disable.100
215MDL-39949Block without header causes JS error on pageUpdated 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
216MDL-39950Reproduce 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
217MDL-39953Replace Legacy events - BlogsReplace 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
218MDL-39954Replace Legacy events - Assessable contentReplace 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
219MDL-39955Replace Legacy events - CompletionReplace 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
220MDL-39956Replace Legacy events - CohortReplace 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
221MDL-39957Replace Legacy events - CourseReplace 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
222MDL-39958Replace Legacy events - GroupsReplace 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
223MDL-39959Replace Legacy events - moduleReplace 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
224MDL-39960Replace Legacy events - roleReplace 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
225MDL-39961Replace Legacy events - UserReplace 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
226MDL-39962Replace Legacy events - MixedReplace 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
227MDL-39963Legacy 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
228MDL-40003Assignment submission comments are not restoredIf "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
229MDL-40020Check usage of comment::init() and set component paramWith 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
230MDL-40034Epic: File API improvements to handle clustering environmentsThis 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
231MDL-40037POLICY: Decide if we should allow context to be exposed by WS or notDecide 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
232MDL-40039Add alternative to contextid for core_files_external::uploadAdd alternative to contextid for core_files_external::upload, contextid shouldn't be a required field as per the discussion on MDL-40037 5
233MDL-40040Replace add_to_log with an event trigger - BlogReplace 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.'&amp;tagid='.@$tagid.'&amp;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
234MDL-40041Replace add_to_log with an event trigger - CourseReplace the add_to_log calls in the following directory, with new events which contains the same information: * course/ (21 calls) 40
235MDL-40042Replace add_to_log with an event trigger - completionReplace 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
236MDL-40043Replace add_to_log with an event trigger - courseReplace 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&amp;user=$user->id&amp;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&amp;user=$userid", "$oldfullname -> $newfullname"); /index.php:79: add_to_log(SITEID, 'course', 'view', 'view.php?id='.SITEID, SITEID); 20
237MDL-40044Replace add_to_log with an event trigger - roleReplace 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
238MDL-40045Replace add_to_log with an event trigger - UserReplace 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
239MDL-40046Replace add_to_log with an event trigger - mod_pageReplace 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
240MDL-40047Replace add_to_log with an event trigger - mod_feedbackReplace 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
241MDL-40048Replace add_to_log with an event trigger - mod_chatReplace 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
242MDL-40049Replace add_to_log with an event trigger - mod_choiceReplace 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
243MDL-40050Replace add_to_log with an event trigger - webservicesReplace 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
244MDL-40051Replace add_to_log with an event trigger - miscReplace 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
245MDL-40052Replace add_to_log with an event trigger - course reportsReplace 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
246MDL-40053Replace add_to_log with an event trigger - notesReplace 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.'&amp;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
247MDL-40054Replace add_to_log with an event trigger - mod_lessonReplace 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
248MDL-40055Replace add_to_log with an event trigger - mod_assignReplace 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
249MDL-40056Replace add_to_log with an event trigger - mod_scormReplace 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
250MDL-40057Replace add_to_log with an event trigger - mod_assignmentReplace 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
251MDL-40058Replace add_to_log with an event trigger - mod_wikiReplace 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
252MDL-40059Replace add_to_log with an event trigger - mod_glossaryReplace 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&amp;mode=$prevmode&amp;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&amp;eid=$eid", "$eid", $cm->id); /mod/glossary/view.php:127: add_to_log($course->id, "glossary", "view", "view.php?id=$cm->id&amp;tab=$tab", $glossary->id, $cm->id); 40
253MDL-40060Replace add_to_log with an event trigger - mod_bookReplace 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.'&amp;chapterid='.$chapter->id, $chapter->id, $cm->id); 40
254MDL-40061Replace add_to_log with an event trigger - mod_dataReplace 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&amp;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&amp;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&amp;rid=$rid", $data->id, $cm->id); /mod/data/edit.php:239: add_to_log($course->id, 'data', 'add', "view.php?d=$data->id&amp;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
255MDL-40062Replace add_to_log with an event trigger - mod_forumReplace 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&amp;search=".urlencode($search), $search); 40
256MDL-40063Replace add_to_log with an event trigger - mod_quizReplace 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
257MDL-40079Hardcoded timeout parameter in the repository pluginHi, 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
258MDL-40107Upgrade TCPDF to tcpdf_6_0_031Hopefully 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
259MDL-40126core_enrol_get_course_enrolment_methods() webserviceCreate 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_core8
260MDL-40205Long Block Titles Overflow in CleanSee screenshot. A long block title overflow the block and extends into the central content.5
261MDL-40220Remove deprecated calls to get_plugin_types(), get_plugin_list() etcAfter 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
262MDL-40228Incorrect backup setting names in automated backupsLooks 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
263MDL-40230Integrate Outcomes stage 2 into coreMoodlerooms 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
264MDL-40248Activity Chooser should better support subtypesIn 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
265MDL-40249Enable 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
266MDL-40250Add unit tests for core_files_external::uploadAdd unit tests for core_files_external::upload()5
267MDL-40338META: Evaluate Remote-Learner ELIS "hacks" for coreChanges 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
268MDL-40363Files with spaces that are url encoded to %20 don't download under IISDocuments 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
269MDL-40369Remove deprecated iconsRemove deprecated icons3
270MDL-40436Error in Courses block when the user is enrolled in courses from other servers by MNetIf 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
271MDL-40493Allow an editor plugin to be chosen per profileAt 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
272MDL-40662setting 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
273MDL-40668Revert 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
274MDL-40685META: Add/rescale headings for activities and resources pageSome 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_Guidelines100
275MDL-40693Make Bootstrapbase breadcrumb seperator respect $THEME->rarrowThe 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
276MDL-40697Add events for when a grade has been created/updatedIt would be nice to be able to register for course final grade updates.40
277MDL-40705Clean theme / navigation menu / current course: a long shortname will be displayed over the main contentEnable 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
278MDL-40722Clean theme: Resizing 3 column page with all blocks on the left is not displayed correctlyFollowing 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
279MDL-40750Front 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
280MDL-40752Login panel should be placed on the right side, in RTL mode (theme/clean, bootstrap)"login" and "register" panels should be flipped, in RTL mode5
281MDL-40768Extract icons from TinyMCE 4.0Remove the icons from TinyMCE and create an AI file for the main issue8
282MDL-40769Create Icons from TinyMCE vectorCreate SVG and PNG icons from the AI file20
283MDL-40770Implement Icons for TinyMCE 3.*Create the code that will be used render the icons for TinyMCE20
284MDL-40786User'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
285MDL-40805user_logout event is not triggered when using CAS authentication with CAS logout option set to yesThe user_logout event does not get triggered when CAS authentication plugin is enabled AND the "CAS logout option" is set to "yes"40
286MDL-40821Language menu in Clean should show language usedWhen using the Clean theme, the language menu shows the word 'Language'. It should show the language used (detected from browser settings or selected).2
287MDL-40833One topic at a time should use a heading tag for the topic headingThe 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
288MDL-40849Assignment marking guide screen is laid out poorly in CleanSee screenshot. This is the new assignment module. Theme == Clean.20
289MDL-40874Retire MyMobile as a standard themeI'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
290MDL-40907Replace add_to_log with an event trigger - course moduleReplace 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
291MDL-40908Replace add_to_log with an event trigger - tagReplace 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 deleted40
292MDL-40909Replace add_to_log with an event trigger - enrolReplace 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
293MDL-40910Replace add_to_log with an event trigger - gradeReplace 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
294MDL-40911Replace add_to_log with an event trigger - loginReplace 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
295MDL-40912Replace add_to_log with an event trigger - course categoryReplace 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
296MDL-40913Replace add_to_log with an event trigger - messageReplace 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.'&amp;user2='.$USER->id, $addcontact); /message/index.php:139: add_to_log(SITEID, 'message', 'remove contact', 'index.php?user1='.$removecontact.'&amp;user2='.$USER->id, $removecontact); /message/index.php:143: add_to_log(SITEID, 'message', 'block contact', 'index.php?user1='.$blockcontact.'&amp;user2='.$USER->id, $blockcontact); /message/index.php:147: add_to_log(SITEID, 'message', 'unblock contact', 'index.php?user1='.$unblockcontact.'&amp;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
297MDL-40914Replace add_to_log with an event trigger - authenticationReplace 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
298MDL-40915Replace add_to_log with an event trigger - calendarReplace 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&amp;id='.$this->properties->id, $this->properties->name); /calendar/lib.php:2265: add_to_log($eventcopy->courseid, 'calendar', 'add', 'event.php?action=edit&amp;id='.$eventcopyid, $eventcopy->name); /calendar/lib.php:2320: add_to_log($this->properties->courseid, 'calendar', 'edit all', 'event.php?action=edit&amp;id='.$this->properties->id, $this->properties->name); /calendar/lib.php:2325: add_to_log($this->properties->courseid, 'calendar', 'edit', 'event.php?action=edit&amp;id='.$this->properties->id, $this->properties->name); Suggested additional events: Check to see if deleting a calendar event requires an event.20
299MDL-40916Replace add_to_log with an event trigger - mod_imscpReplace 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
300MDL-40917Replace add_to_log with an event trigger - mod_resourceReplace 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
301MDL-40918Replace add_to_log with an event trigger - mod_ltiReplace 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
302MDL-40919Replace add_to_log with an event trigger - mod_surveyReplace 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
303MDL-40920Replace add_to_log with an event trigger - mod_urlReplace 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
304MDL-40921Replace add_to_log with an event trigger - mod_workshopReplace 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
305MDL-40922Replace add_to_log with an event trigger - mod_folderReplace 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
306MDL-40932Tabbing 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
307MDL-40962Alternate name warnings in Recent Activity blockWhen 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
308MDL-40975Review new course editing interfaceMDL-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
309MDL-41031Create a base class for page viewed eventAs 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
310MDL-41033Filepicker 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 appears8
311MDL-41039Replace Legacy events - QuizReplace 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_overdue40
312MDL-41062Can 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
313MDL-41067MUC 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_configuration13
314MDL-41071Class plugininfo_mod does not cache in the right cache definitionAfter playing with some profiling tools, I noticed that plugininfo_mod was using plugininfo_base cache definition.8
315MDL-41075Selecting "Choose..." option from My Courses dropdown on Participants page generates error: Can not find data record in database table courseOn 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
316MDL-41082Portfolio instances are loaded when loading the user settingsThere 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
317MDL-41098Add 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
318MDL-41100Caching get_plugin_list_with_fileThis 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
319MDL-41101Replace existing add_to_log calls for mod_assignReplace the existing add_to_log calls for mod_assign.40
320MDL-41123Replace 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
321MDL-41128Import latest branch of upload pdf codeImport 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
322MDL-41131Allow 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
323MDL-41133Update 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
324MDL-41137Verify no UI RTL issues with feedback_pdf plugin.Verify no RTL issues with feedback_pdf plugin (may need to include RTL fonts). 8
325MDL-41138Add unit tests for editpdf after refactoringAdd unit tests and behat tests to feedback_pdf plugin5
326MDL-41152Clean / Bootstrap theme: Categories & Items page may be too wide to be usableTo 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
327MDL-41159The folder management icon has a weird zindex and shows above modal dialoguesDiscovered 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 popup1
328MDL-41161upgrade mod_chat from yui 2 to yui 3As 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
329MDL-41170user_updated event not triggered when user password modified in moodlelib.php functionsuser_updated event not triggered when user password modified in moodlelib.php functions: * update_internal_user_password() * setnew_password_and_mail() 8
330MDL-41176Debugging when changing a users email address and other bugsYou 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
331MDL-41185Create 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
332MDL-41187Polish Moodle dialog for mobileThis is a META issue for Moodle dialog on mobile device, especially phone.52
333MDL-41188Mobile: 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 page13
334MDL-41189File 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
335MDL-41197core_text::convert produces notices when experiencing invalid utf8 params or char not in target encodingIt 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/d6378ddcc0e6e248f92b65f520c8f77a85298ffb2
336MDL-41200Change header for selecting file in filepickerWhen user selects a file in filepicker, it announces/displays 'edit somefilename' on the headerinstead of 'select'.8
337MDL-41208Update YUI to version 3.12.0YUI needs to be updated to version 3.12.02
338MDL-41213File 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
339MDL-41214Docked blocks zindex puts them on top of fullscreen dialogsEither 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
340MDL-41215filepicker infinite scroll scrolling issuesThe 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
341MDL-41220core_component_testcase assumes you don't have add-ons isntalledSteps 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
342MDL-41226User 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 <yoursite>/user/profile/index.php # Notice the "Create new profile field OR Create new profile category" look bad.5
343MDL-41227D&D moving module to hidden section does not change visibilityThis 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 random5
344MDL-41229Filepicker is broken in IE9The repositories float in an area below the dialog. (Something that went in this week - probably MDL-39851).5
345MDL-41230Increase time limit for the tool_uploadcourseHow about setting it to 0 in both UI and cli? (like automated backup script does)3
346MDL-41231Export 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
347MDL-41232Revert temporary fix in filepicker for IE8Remove 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
348MDL-41235Atto HTML Editor - The text box width changes if you toggle back and forth between wysiwyg and html modeIn the HTML 5 editor - The text box size changes if you toggle back and forth between wysiwyg and html mode.2
349MDL-41236Atto - In html mode the other buttons are disabled but the visual difference is too subtleHTML5 Text Editor : In html mode the other buttons are disabled but the visual difference is too subtle. 13
350MDL-41237Atto HTML Editor - Decide on the list of headings to includeHTML 5 Text Editor: Decide how many levels of headings to support and any other text styles. 8
351MDL-41238Atto HTML Editor - Close the styles menu when clicked outsideHTML 5 Text Editor: Close the styles menu when clicked outside13
352MDL-41251Forum discussion page needs aria and role attributes to make navigation easierIn 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
353MDL-41252Simple changes to main course page to improve accessibilityWe 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
354MDL-41266Define 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_API8
355MDL-41267Add support for admin tool subpluginsThis 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
356MDL-41268Implement 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.298
357MDL-41269Implement logstore_standard pluginImplement logstore_standard plugin http://docs.moodle.org/dev/Logging_2#DB_log_storage_plugin_.28log_standard.298
358MDL-41270Implement new log storage management admin UIImplement 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 pages40
359MDL-41271Implement log store settings and related filtering codeImplement 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_pages8
360MDL-41272Implement logstore_legacy emulation reader pluginImplement 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.2920
361MDL-41273Edit PDF: Finish work on comments toolThings 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
362MDL-41274Edit 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
363MDL-41275Edit PDF: Add list of generated pdf(s) to grading formThe 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
364MDL-41276Edit PDF: Add line tool (including rectangle + oval tools)Write the YUI renderer for the line tool. 13
365MDL-41277Edit PDF: Add rectangle toolsAdd support for the rectangle tool.13
366MDL-41278Edit PDF: Add support for the oval toolAdd support for the oval tool13
367MDL-41279Edit PDF: Add support for the pen toolAdd support for the pen tool13
368MDL-41280Edit PDF: Add support for the stamp toolAdd support for the stamp tool13
369MDL-41281Edit PDF: Add support for the select toolAdd support for the select tool: * erase * drag and drop13
370MDL-41283Convert Course participation report to new logging APIhttp://docs.moodle.org/dev/Logging_usage#Course_participation_report http://docs.moodle.org/dev/Logging_2#Implementation_steps_220
371MDL-41284Convert Statistics report to new logging APIhttp://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
372MDL-41285Convert recent activity block to use new Events APIhttp://docs.moodle.org/dev/Logging_usage#blocks.2Frecent_activity.2Fblock_recent_activity.php http://docs.moodle.org/dev/Logging_2#Implementation_steps_220
373MDL-41286Convert outline report to use new logging APIThe 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
374MDL-41287Buffering in standard log storageImprovement to Moodle standard DB log storage supporting buffering and performance tuning100
375MDL-41289create ajax method to get user prefwe 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
376MDL-41307Tags 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
377MDL-41316Spam cleaner using ORACLEI’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
378MDL-41337Can'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
379MDL-41347tool_uploadcourse: Invalid restore files are not well handledIf 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
380MDL-41352Mymobile theme: javascript error on course pagesEnable 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
381MDL-41379button alignment on course outcome screen is wonky in CleanSee screenshot5
382MDL-41385Create icons for non-default buttonsThere 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
383MDL-41387The 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
384MDL-41389The auth/db authentication plugin should trigger the user_created/updated eventh3. 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
385MDL-41398Clean 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
386MDL-41413Replace enrol_meta event handlers with event observersReplace enrol_meta event handlers with event observers 8
387MDL-41415Fix 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
388MDL-41419core_files_externallib_testcase::test_get_files sporadically failsThis 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
389MDL-41428Missing space between coursefiles and course short name in filepickerMissing space between coursefiles and course short name in filepicker I've attached a screenshot3
390MDL-41437missing plugins are not displayed on plugins overview page1/ 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 caching20
391MDL-41438Change 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
392MDL-41440new 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
393MDL-41447Upgrading from 1.9 to 2.2 (en-route to 2.4.5) has errors with certain kinds of URL linkWe 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
394MDL-41456Fix existing events to respect base access specifiersEvents 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
395MDL-41481Background scrolling is not locked when using activity chooser in a mobile device with clean themeReplication 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
396MDL-41504Tidying up the new mod edit buttonsThere 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-4097620
397MDL-41505Clean theme: Section visibility icon disappears on narrow screens2.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
398MDL-41534Extra blank rows shown in Assignment Submissions screen and Participants screenCurrently, 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
399MDL-41538Edit PDF: the pdf dialog opens then closes almost straight awayWhen 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: </strong>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
400MDL-41541Edit PDF: test_gs_path is brokenGhostscript 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
401MDL-41551Block drag/drop broken for clean theme on /myWe 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
402MDL-41559Replace handlers by observers for groups in mod_quizMDL-39958 has replaced the old events, but has not migrated the handlers to observers. This needs to be done.3
403MDL-41565Observers do not include file from the right locationThe 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
404MDL-41569Remove nowrap from .flexible thOne 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
405MDL-41589Cannot delete a user's role in a courseIt 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
406MDL-41591Z-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.png8
407MDL-41604Fallback 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
408MDL-41605Search 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
409MDL-41608Add mustache-powered renderable for notificationsGrrrr 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 "<div class=\"$type\">$message</div>"; } {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-491525
410MDL-41615Fix heading level for QuizFix heading level for site consistency.8
411MDL-41619Event files should not be accessed directly (ie. through the URL).Not all the events declare defined('MOODLE_INTERNAL') || die();1
412MDL-41633Edit PDF: create layout mockupAs it was mentioned during the scrum meeting we should decide of a layout for the edit pdf feedback.20
413MDL-41664Add 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
414MDL-41690Deprecate previously public methods in class cm_infoThe 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
415MDL-41699Editpdf - Let students view pdf online (not just downloadable version)This has to only include the list of comments included in the generated pdf.8
416MDL-41702Can'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
417MDL-41707Allow phpunit tests to use local external files or skip external tests completelyCurrently 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
418MDL-41713Copy the relevant icons from new TinyMCE theme to attoThe icons in atto don't match the monochrome icons used elsewhere in Moodle core. 13
419MDL-41716Atto: Resizing the editor is inconsistentThese 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 Firefox5
420MDL-41726Serious performance regression in course reset of groups, including race condition that may send erroneous emails to studentsSteps 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
421MDL-41773Forum: code an accessible layoutForums 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_Specification100
422MDL-41787MATURITY_ALPHA and friends cannot be defined in lib/setuplib.phpThe 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
423MDL-41792The calendar itself should display dates depending on the calendar type usedWith 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
424MDL-41796Edit PDF: Add support for the highlighter toolAlso needs transparent images for backend rendering.5
425MDL-41800EditPDF: Add comments quicklistAdd the comments quicklist + searching interface.8
426MDL-41805EditPDF: 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
427MDL-41811Load admin menus using AJAX when not on admin pagesNot 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
428MDL-41819Grades lost when editing in the grader report due to max_input_varsI 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
429MDL-41824Edit PDF: Split up javascript into smaller modulesSuggestions are: comments, annotations, menus, quicklist and editor40
430MDL-41833SetType 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
431MDL-41843Incorrect uses of namespace in mod/lti/OAuthBody.phpOAuthBody.php states moodle\mod\lti namespace, but Exception class doesn't exist in this namespace, it should be \Exception or use OAuthException.5
432MDL-41856Edit PDF: Update more iconsUpdate more icons such as: # previous page # next page # search comment # comment color options # shapes color options # stamp options # generate pdf feedback20
433MDL-41870Atto HTML Editor: Implement Aria managed keyboard navigation for the toolbarThe main benefit here is one tab will skip over the toolbar. http://www.w3.org/WAI/PF/aria-practices/#kbd_general_within4
434MDL-41885Modules should declare their use of the question bankAt 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 it8
435MDL-41903Import Typo3 4.7.15see http://typo3.org/download/2
436MDL-41904Import markdown 1.3see http://michelf.ca/projects/php-markdown/2
437MDL-41938Course 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
438MDL-41953Relax component name rules slightly to allow more than one digit at the endThe 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
439MDL-41960META: 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
440MDL-41962Event handlers are not removed from the DB after upgradeAfter 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
441MDL-41989Fix 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
442MDL-41993Atto produces ugly htmlSome 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
443MDL-41994Notice: Undefined property on calendar export pageWhen not logged in and exporting a calendar the following notice occurs - "Notice: Undefined property: stdClass::$password .."3
444MDL-41995Calendar 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
445MDL-41999do not use $USER->password and $USER->description directlyFor performance and security we unset $USER->password and $USER->description directly. Fetch from DB if necessary.2
446MDL-42001Use observers instead of handlers in mod_chatThe user_logout event is now different, we should then use the observers.5
447MDL-42002Redesign TinyMCE icons derived from icoMoon for consitent weight and sizeMany 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 blurry40
448MDL-42003Use observers instead of handlers in mod_forumSince role_assigned has been converted to a new event, we should use an observer there.5
449MDL-42004Use observers instead of handlers in enrol_cohortThey should have been converted along with the cohort_* events.5
450MDL-42014Session cache stops working after upgrade to 2.5.2Finally 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} <?php include "config.php"; $coursecatcache = cache::make('core', 'coursecat'); $key = uniqid('-randomkey-'); $coursecatcache->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
451MDL-42015Module-specific activity completion requirements do not show in course completionCustom 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
452MDL-42021Event base class should force an objectid if objecttable is definedCurrently we throw a message if objectid is set but not objecttable, the other way around should do the same.2
453MDL-42023Edit PDF: Integrate editpdf plugin for mod_assignThis 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
454MDL-42025Edit PDF: Add behat testsWe 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
455MDL-42026Atto: Styles selector picks up styles from theme which makes it look crazyChanging this to a plain list of links would look better.1
456MDL-42028EditPDF: replace the loading icon by a progress bar as a user could think it's broken for large pdfAdd a bit more information when the PDF is long to generate otherwise it seems that it's broken.20
457MDL-42029Editpdf: Page selector should indicate what page you are onWe 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
458MDL-42030EditPDF: when selecting stamp image the stamp tool is not selectedWhen 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
459MDL-42040Organize the registration of shutdown handlersThis 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
460MDL-42044Install add on fails validation when zip does not contain folder entriesWhen 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
461MDL-42047Removing "Custom instance name" from Cohort enrollment when Cohorts no longer exist causes Coding errorWhen 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
462MDL-42054phpmailer unit test redirection is using incorrect testsee 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
463MDL-42078Uninstalling multiple plugins usability and bugfixesSuddenly 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
464MDL-42079Repeating events in external calendar do not appear in Moodle CalendarTo 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 days40
465MDL-42081EditPDF: Add default stamp imagesWe need to add the new default stamp images done by barbara in MDL-41856 (they are in the zip file)5
466MDL-42082Password field appears as text plain in the external database auth plugin formThe 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
467MDL-42085Default 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
468MDL-42091Fix the background color for atto buttons when clicked and hoverThey 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
469MDL-42097can_change_password() set to false should not display the password form input during updateEnable 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
470MDL-42098Debugging 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
471MDL-42100Bad 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
472MDL-42102Style TinyMCE toolbars consistently with Moodle styleGray 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 style100
473MDL-42110Installing 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
474MDL-42111Youtube Repository Video Preview is Cut OffWhen 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
475MDL-42117Drag 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
476MDL-42129Create mock up for the filemanager to match the new toolbarFilemanager should look consitent with the new toolbar (Atto, EditPDF, TinyMCE) Please refer to MDL-41633 for styling details2
477MDL-42130Create mock up for the filepicker to match new toolbarFilepicker should look consitent with the new toolbar (Atto, EditPDF, TinyMCE, Filemanager) Please refer to MDL-41633 for styling details2
478MDL-42131Edit 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
479MDL-42144Improve Dynamic Loading in Repository filepickerAs 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
480MDL-42147Filepicker: aesthetic css issues on IE9Standard 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
481MDL-42149Design new icons for filemanager/filepicker in svg/png formatDesign new icons to make it consistent with the rest of the new svg icons20
482MDL-42150Edit 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
483MDL-42152import YUI 3.13.0We have some nasty hacks in 3.12.0 at the moment, we should aim for 3.13.0 in 2.6 release...5
484MDL-42173Name 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
485MDL-42195Bootstrap makes all images responsive with no way to disable this behaviour via CSSAfter 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
486MDL-42199Random failures with test_increment_revision_numberIn 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
487MDL-42201Creating 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
488MDL-42206Don't trigger meta enrolment sync on course settings changeWhen 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
489MDL-42207fix message text formattingthe message formatting code is not ok, let's cleanup this area8
490MDL-42208use unmasking password field in auth plugin configs (master) and prevent saving of passwordsthe problem is that auth config does not use forms yet, but I guess we can hack around it for now....5
491MDL-42212Lesson module is not browseable using the Server Files repositoryWhen 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
492MDL-42214Blocking user before reading message causes constant popupsI think this MDL-18386 is back (well it happens for me on moodle.org anyway). 8
493MDL-42217Course 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
494MDL-42223Deprecate $CFG->cachejs in favour of reusing $CFG->debugAs 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 = -113
495MDL-42224clean up messaging and email redirection in unit testsProblems: * 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 tests5
496MDL-42225Badge 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
497MDL-42226Viewing 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
498MDL-42227Funkiness 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
499MDL-42235Create outline on font colour and highlight icons for editorsWhen the font colour and highlight colour are grey, the icon itself can be lost, so a white outline of the icon would be helpful8
500MDL-42236Style the filemanager to match the new toolbarPlease refer to this issue MDL-42129 for the mock-up20
501MDL-42237Style the filepicker to match the new toolbarPlease refer to this issue MDL-42130 for the mockup20
502MDL-42239Calendar tooltips have bad aria-controls valuesOn 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
503MDL-42241The URL for the upload courses tool in site admin is wrongI 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.php2
504MDL-42243filter settings regressionsThe problem is we should support settings.php in filters but at the same time keep BC for filtersettings.php2
505MDL-42269Review all new events introduced in 2.6devEvents 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
506MDL-42276Automate 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.520
507MDL-42280Automate MDLQA-1546 and MDLQA-1545 - blocks managementBoth 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 section8
508MDL-42285Automate MDLQA-93 - A teacher can delete questions from the question bankAs described in MDLQA-93, a teacher can delete questions from the question bank8
509MDL-42289Automate MDLQA-57 - Past chat sessions can be made available for everyone to viewAs described in MDLQA-57, past chat sessions can be made available for everyone to view41
510MDL-42292block.version regression in custom lang toolDebug 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
511MDL-42293Behat 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
512MDL-42317TinyMCE editor can overlap with Blocks on New Event Page in Calendar in Clean ThemeSee 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
513MDL-42330Automate MDLQA-5257 - An admin can award a site badgeAs MDLQA-5257 described, an admin can award a site badge3
514MDL-42331Automate MDLQA-5258 - A teacher can add and allocate a course badgeAs described in MDLQA-5258, a teacher can add and allocate a course badge3
515MDL-42332Automate 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 section5
516MDL-42339Remove double formatting set_title/set_heading over codebaseBoth $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
517MDL-42340Long 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
518MDL-42342Alternate name warnings in quiz results blockI 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
519MDL-42356Edit PDF: When no stamps uploaded toolbar looks strangeThere is a strange line on the right-hand side of the toolbar when you have not uploaded any stamps.1
520MDL-42360Edit PDF: On-screen layout does not match PDF layoutThis 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 larger13
521MDL-42377Incorrect 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
522MDL-42381remove unused OLE lib and pear excel leftoverssee MDL-421483
523MDL-42386Etag verification for stored files never matchingDoing 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
524MDL-42387Revisit CFG->filelifetime implementation and usesDoing 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
525MDL-42390User name (first/last) not properly scrubbedFirst and last name are not properly scrubbed during non-form input or display. This allows content, style, and javascript injections.13
526MDL-42392Block content doesn't show when the content was hidden and javascript is turned offIt 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
527MDL-42393Calendar events blinksOn 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
528MDL-42405EditPDF: 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
529MDL-42414One more time() random failure: test_increment_revision_numberThis 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
530MDL-42421Remove incorrect statement in auth/upgrade.txtIn 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
531MDL-42428Update M.util.show_confirm_dialog() to use moodle-core-notificationAfter confirming it with [~dobedobedoh] the confirm dialogues in the rubrics form and quiz completion are not converted to moodle-dialogue20
532MDL-42429PHP 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
533MDL-42433No longer able to annotate pdfs in 2.6 betaHaving 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
534MDL-42438new emulated simpleyui rollup does not load CSS for extra moduleswe 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
535MDL-42440Cannot enable most authentication pluginsMost 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
536MDL-42442eliminate standardwhite references in lib/setup.hp// Ensure a valid theme is set. if (!isset($CFG->theme)) { $CFG->theme = 'standardwhite'; } 1
537MDL-42461Creating 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
538MDL-42465Beeping user in chat causes strict standard warning# Visit <yoursite>/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
539MDL-42467Deleted Database and Glossary entries in RSS BlockDeleted database entries are not removed from RSS feed. Probably glossary too (didn't check). Discovered while testing MDL-26170.8
540MDL-42481Clicking 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 expected13
541MDL-42493Upgrade to current 2.6beta, memory exhausted problem purging cachesSite 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
542MDL-42496backport MDL-41245 add-on installer redirection fix from masterThis should finally resolve the problem when installing missing dependencies...5
543MDL-42497orphaned subplugins are missing on the plugins overview pagewe should probably add a new pluginfo for sub-plugins that were installed via missing plugin8
544MDL-42512Missing filters are displayed in the filters administrationWhile 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_tabs5
545MDL-42525improve perf of core_plugin_manager::get_plugin_info()we do not need to load everything, we can load just one plugin type there...3
546MDL-42541Refactor 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
547MDL-42547Bulk users upload: values are not trimmed in CSV file when bulk uploading usersBulk 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
548MDL-42553It is not possible to uninstall calendar types# Install a calendar type (eg. https://github.com/markn86/moodle-calendartype_test) # Go to the <yoursite>/admin/plugins.php and notice you can not uninstall the calendar type.5
549MDL-42575Revert heading option display for page resourceAs 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
550MDL-42585Refine capabilities that permit user to see assignments and the user feedbacks without ability to gradeWe 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
551MDL-42588Add option to Scorm setting to display or hide activity nameFrom 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
552MDL-42597New maintenance mode countdown counts down to 0 instead of 1If 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
553MDL-42612add Russian Ruble to list of paypal currenciesRussian Ruble - RUB 1
554MDL-42682Fix display alignment and content for forum discussion in Clean themeWith 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
555MDL-42748Help dialogue no longer handles long help textsI 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
556MDL-42752Disabled icons on file picker still get focus resulting in them being read out by screen readersWhen 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.escape20
557MDL-42767Notes for deleted courses causes errorWhen 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
558MDL-42797Guest access displays exception error right after upgrade processThis 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
559MDL-42801Drag 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
560MDL-42834Deprecate loginhttpsIn 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
561MDL-42882Performance improvement to missing root directory upgrade stepIn 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
562MDL-42884Can not delete users with invalid emailsThe 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
563MDL-42885Updating existing users via bulk upload causes debugging messagesh5. 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
564MDL-42889Remove access to old log table in admin/handlevirus.php and other clam related codeCurrently this library uses the legacy logging table. It needs to be upgraded to use the new logging API.2
565MDL-42890Reimplement access to log table in backup/util/helper/backup_cron_helper.class.phpCurrently this class uses the legacy logging table. It needs to be upgraded to use the new logging API.13
566MDL-42891Reimplement 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
567MDL-42892Reimplement 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
568MDL-42894Investigating performance of the new logging API in practiceOnce 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
569MDL-42896Grade update eventMultiple 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
570MDL-42898Develop a timeline page/blockWith 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
571MDL-42904Self enrolment by group key does not work - until group settings are saved againWe 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
572MDL-42909Move (non-JS): title attribute is on wrong tagWhen you are moving items (using the non-AJAX version), the move targets are written out using code like the following: {code} <li class="first movehere" title="Move 'AA306 discussion' to this location"> <a href="https://learn2acct.open.ac.uk/course/mod.php?movetosection=149146&sesskey=666"> <img class="movetarget" src="https://learn2acct.open.ac.uk/theme/image.php/ou/core/1383320278/movehere" title="Move to here" alt="Move to here"> </a> </li> {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} <a title="Move 'AA306 discussion' to this location" href="https://learn2.open.ac.uk/course/mod.php?moveto=287791&amp;sesskey=666"><img class="movetarget" src="https://learn2.open.ac.uk/theme/image.php/ou/core/1382685195/movehere" alt="Move to here"></a> {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
573MDL-42924use normalize_component to extract plugin name and typefile: 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
574MDL-42928Reimplement scroll locking for full-screen dialoguesIMO, 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
575MDL-42931Decide Moodle 2.7 requirements and push them to environment.xmlWe 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
576MDL-42934Self registration does not use site language setting# Visit <yoursite>/admin/tool/langimport/index.php and install a new language pack. # Visit <yoursite>/admin/settings.php?section=langsettings and set the 'Default language' to the one you installed. # Visit <yoursite>/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
577MDL-42935user_create_user and user_update_user functions do not validate auth, lang or themeThe 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
578MDL-42956mnet broken for mssql and oracleWhile 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
579MDL-42962create a course_module_viewed abstract classWe need an abstract class for all those course_module_viewed events8
580MDL-42973Unknown component locationWhen 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
581MDL-42980Clean: Activity chooser's Add/cancel button on iPhone4S does not respondOn 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 Chrome8
582MDL-42983Clean: Custom menu and login info does not appear on small screenOn 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 again20
583MDL-42993Username with spaces no longer valid for LDAP authenticated usersUsing 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
584MDL-42995Restored course has broken links in assignment description when viewed from calendar eventWhen 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
585MDL-43005tag param in blog index page should be strictly checkedwe 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 tagtest4
586MDL-43008Calendar 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
587MDL-43010Create expand/collapse in the X steps for behatCreate 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
588MDL-43028Site admin navigation is not expanding on few pagesWhile viewing "Default My home page" navigation is not expanded and breadcrumbs are not displayed.8
589MDL-43037Quiz user overrides generates alternate names debugging messageYou 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
590MDL-43044The course_module_instances_list_viewed abstract class could be improved to do more.See MDL-42962.13
591MDL-43058report_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
592MDL-43062Content 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
593MDL-43063Function download_file_content() inline documentation of return value incorrectThe 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
594MDL-43106Moodle 2.6 sends 2 Set-Cookie headersIt 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
595MDL-43117Add release column to Plugins Overview pageIt 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
596MDL-43137class loader breaks open_basedirLooking 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
597MDL-43140When submitting the form on the mnet access control page a warning is shown# Visit <yoursite>/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
598MDL-43142No username variable passed to mnet access control string# Visit <yoursite>/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
599MDL-43167Frontpage should support the same JavaScript as course pagesFrontpage should support the same JavaScript as course pages: * drag/drop * toolboxes40
600MDL-43171Cleanup and fixup of the events/logging docsWhile 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
601MDL-43175Base 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
602MDL-43178Incorrect confirmation message appears on "per-forum digest option" screenIntroduced 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
603MDL-43188Backport missing beep to 2.5 and 2.4This bug is to backport the 2.6 fixes made in MDL-37962 to 2.5 and 2.45
604MDL-43196After upgrading to 2.6 my email-based-self-registration serves up an error when I click on 'Create New User' on the front pageI 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
605MDL-43197Parent role only sees course total and no longer individual gradesIn 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
606MDL-43213behat config settings and init code can be simplifiedWhile 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
607MDL-43215Adding web service token generates alternate names debugging message # Visit <yoursite>/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
608MDL-43238Improve event php doc to include other informationEvent 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-arrays13
609MDL-43250get_graders() matches potential graders from all groupsWe 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
610MDL-43262Move dialogue default overrides to attributesWe 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
611MDL-43266Testing sites are cleaning all test dataroot contentsEdit 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
612MDL-43267Course menu to 'Move item' needs betterment for screen readersThe 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 <a> to let the user know it is clickable? (Thanks Greg Kraus for spotting that)100
613MDL-43268Undefined index: filter in /lib/outputrequirementslib.phpSince 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
614MDL-43270Migrate moodle-course-dragdrop to use ShifterMigrate moodle-course-dragdrop to use Shifter5
615MDL-43271Migrate moodle-course-formatchooser to use ShifterMigrate moodle-course-formatchooser to use Shifter5
616MDL-43273Migrate moodle-course-coursebase to use ShifterMigrate moodle-course-coursebase to use Shifter5
617MDL-43274Prevent course logs from being deleted when course is resetWe 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
618MDL-43281blockregion.js doesn't recover properly after not finding region nodeI 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
619MDL-43284Question bank needs some CSS attentionThe 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
620MDL-43289Events for submissionCreate 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
621MDL-43291Events 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
622MDL-43292Events 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
623MDL-43293Events for commentsCreate 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
624MDL-43294Events for submission responseCreate 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
625MDL-43295Debugging 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
626MDL-43302Migrate moodle-form-passwordunmask to use ShifterMigrate moodle-form-passwordunmask to use Shifter5
627MDL-43306Backup introduces duplicate gradeitem sortorders when restoringAs 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
628MDL-43307Migrate moodle-mod_assign-history to use ShifterMigrate moodle-mod_assign-history to use Shifter5
629MDL-43314Running 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
630MDL-43318Editing 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
631MDL-43323Lazily load moodle-core-tooltip dependenciesWe don't need all of moodle-core-dialogue in all cases and should lazily load those dependencies until we do actually need them.5
632MDL-43325Some dialogues (exceptions, ajaxexception, confirm, etc) are no longer shown when instantiatedThey 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
633MDL-43326Cannot 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#p10650584
634MDL-43330Behat framework: add skip supportWe 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} <?php /** * Behat editpdf-related steps definitions. * * @package assignfeedback_editpdf * @category test * @copyright 2013 Jerome Mouneyrac * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ // NOTE: no MOODLE_INTERNAL test here, this file may be required by behat before including /config.php. require_once(__DIR__ . '/../../../../../../lib/behat/behat_base.php'); use Behat\Behat\Context\Step\Given as Given; /** * Steps definitions related with the editpdf. * * @package assignfeedback_editpdf * @category test * @copyright 2013 Jerome Mouneyrac * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class behat_assignfeedback_editpdf extends behat_base { /** * Checks that Ghostscript is installed. * * @Given /^ghostscript is installed$/ */ public function ghostscriptIsInstalled() { throw new \Moodle\BehatExtension\Exception\SkippedException; } } {code}8
635MDL-43332Automate MDLQA-317 Grades Automated functional testsh3.Description from MDLQA test. For this test you'll at least one course with at least 1 grade item and at least 1 student. The student needs to have a grade for the grade item. While not necessary it is recommended that you have two browsers (ie Firefox and Chrome) so that you can be logged in as a student and a teacher simultaneously) # As a teacher view the grader report. Check that the grade item(s) and the student's grade(s) are correct. Make a note of the student's grade(s). # As the student go into the course. Under Course administration clicks on Grades. You may need to select the User report from the navigation drop down. # Verify that the student's grade(s) are report correctly. # Select the Overview report. Check that the student's course grade is correct. # As the teacher click on Grades under Course Administration. Select the user report from the navigation drop down. # Verify that the teacher can access any users User report via the second navigation drop down. # Verify that there is an "All users" option in the user selection drop down. This should display all student user reports on a single page.40
636MDL-43367get_child_contexts() returns invalid contexts when context path missingThis problem was reported by partner. The trouble is that for various reasons the context path may be missing which results in invalid SQL like path selector in get_child_contexts() - we need to verify the path is valid before using it. The problem is that the get_child_contexts() may be used when deleting data which resulted in deletion of all contexts in several existing sites when using some add-ons... Short term solution: # print debugging message when get_child_contexts() on contexts that do not have path or depth and return empty array # prevent deleting of system context Long term solution (new issue to be created): * prevent deleting of invalid contexts in UI * add CLI tool for diagnostics and rebuilding of context paths * add more debugging notices to inform admins that there is something wrong with contexts * add more debugging info for admins that try to insert data directly to database tables without rebuilding the contexts * maybe add workaround code for invalid contexts that tries to lookup children using some other info 4
637MDL-43378Implement new "Natural weighting" interfaceThis feature is an improved way of setting and displaying weights for grades in a category. It is described in detail in the specification: http://docs.moodle.org/dev/Natural_weighting This aggregation method will be able to combine many of the current aggregation methods into one. If that is so then we can potentially remove quite a lot of code from the gradebook, improving speed and readability. However, to be safe, we plan to implement this in stages: STAGE 1) Implement natural weighting as part of the Sum of Grades aggregation type, with admin settings that allow them to disable all other aggregations if they choose. (Moodle 2.8) STAGE 2) Once people have been using this for a while, explore the possibility of removing other aggregation code or making them into optional plugins. (Moodle 3.0 perhaps)100
638MDL-43395get_records*_sql silently converts invalid limit param to integerThe parameters for get_records are: {code} get_records($table, array $conditions=null, $sort='', $fields='*', $limitfrom=0, $limitnum=0) {code} The parameters for get_records_sql are: {code} get_records_sql($sql, array $params=null, $limitfrom=0, $limitnum=0); {code} Note that if you are a silly developer like Dan, you might accidentally pass a sort to {{$limitfrom}}. In that case, Moodle silently converts the string to an int without warning the developer. I propose to add a debugdeveloper warning for this.13
639MDL-43402Cleanup: delete all unnecessary conditional code detecting zlib enabledWith MDL-42931 we have raised zlib from optional to required. That means that we can safely delete all the conditional code here and there that was previously looking for zlib enabled. 2.7 and up only, of course. Ciao :-)3
640MDL-43410Docking blocks breaks Edit popup menuMoodle 2.6+ (Build: 20131213) <- works before this release Dock any block and the Assignment Edit menu will not work.8
641MDL-43411showfromothers / hidefromothers error shown strings are not present but uses_sections is falseI have create a custom course format. In this format my uses_sections functions returns false. However, when I'm in turn on course editing I get the errors listed below. It seems that the strings are used by format/renderer.php when creating the icons for hiding and showing sections. However I see no check on this code to see if the format uses sections in the first place before throwing the error. Why should I need these strings if my format doesn't use sections. String does not exist. Please check your string definition for showfromothers/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() 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
642MDL-43422Move javascript-static.js to rollupWe should move it to a rollup the same as all other JS to reduce page includes.20
643MDL-43437mod_wiki\event\page_version_deleted event unit test should compare objectid with versionidUnit 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
644MDL-43451Cron task "Creating passwords for new users" missing additional name fieldsRunning 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
645MDL-43481Cleanup: delete all unnecessary legacy password hashing codeIn 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
646MDL-43488Self registration requires city and country fieldsWhen 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
647MDL-43503Switch to paged results for LDAPNow 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-361192
648MDL-43506Remove various deprecated block functionsadd_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/190105
649MDL-43510phpunit 404 tests may fail when using custom exttests locationthe problem is that response may start with xml tag breaking the following assert: {code} $this->assertStringStartsWith('<!DOCTYPE', $response->results); {code} Solution is to remove this test completely because it has very little value...2
650MDL-43511question bank should not store references to MUC cacheMUC 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
651MDL-43515cleanup PHPunit docs page linked from admin settings* remove pear instructions * describe some more options * remove legacy migration info * etc.2
652MDL-43521Admin bookmarks block doesn't workDiscovered 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
653MDL-43524Drop problematic global text cachingThe 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
654MDL-43525Allow add-ons to include YUI gallery modulesAs a follow-on from MDL-36334, it would be useful if add-ons could specify their own gallery modules to include.20
655MDL-43527cleanup safe_mode references in 2.7now that PHP 5.4 is required we do not need to check for safe_mode any more...2
656MDL-43528cleanup magic quotes stuff in 2.7yay - magic quotes finally gone from PHP 5.4!!!2
657MDL-43529cleanup all references to register_globals in 2.7yay - gone from PHP 5.4...2
658MDL-43537cleanup old environment check stuff1/ 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.xml2
659MDL-43556Rewrite comment JavaScriptNeed 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
660MDL-43557Cleanup 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
661MDL-43598Mod 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
662MDL-43604add support for MariaDB 10.xIt 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
663MDL-43605User Report In Grading shows all assignments, not only that of particular groupI 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
664MDL-43641Some moodle dialogs are positioned on not centred when they shoudl beWhen 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
665MDL-43661rename event property level to edulevelThe 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
666MDL-43664JavaScript breaks on IE <= 8The 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
667MDL-43684Activity 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
668MDL-43688Clean: Notice about drag & drop being available is hidden under the navbarWhen 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
669MDL-43714Notice: Trying to get property of non-object in lib/ajax/blocks.php on line 93Easy 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
670MDL-43723Users 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
671MDL-43725Undefined variable $strlogs in Live logsI 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=XXX3
672MDL-43737Remove the {!} place holders from the file-picker renderersThe file picker code is full of {!} place holders left over from the development work flow. These can be removed now.5
673MDL-43740Setting the "Grade type" of a manual grade item to "None" removes it from the Gradebook UISymptoms (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
674MDL-43746require_course_login: incorrect variable assignmentIn 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
675MDL-43761improve 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
676MDL-43784Clean up all the themes shipping in 2.7 by removing some from coreMoodle 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
677MDL-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
678MDL-43839Make 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-437848
679MDL-43842Import 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
680MDL-43849The 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
681MDL-43853Make 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
682MDL-43854Import collapse plugin from prototype.moodle.netThe code for the collapse plugin was only done for the prototype.moodle.net site - get and check the code for it.2
683MDL-43855Implement a new equation editor for AttoWe 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
684MDL-43856Add a mathjax filterA 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
685MDL-43857Auto cleanup Atto HTMLEspecially 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
686MDL-43858New Atto plugin Insert CharacterAdd an insert character plugin to atto.13
687MDL-43859New Atto plugin Insert SmileyAdd insert smiley plugin8
688MDL-43860New Atto plugin switch language LTR/RTLAdd a plugin for this (disabled by default?)8
689MDL-43861Plugins for font/background colours in AttoDisabled by default. Accessibilty concerns around contrast. 20
690MDL-43862Add mediamanager plugin for AttoThis requires an iframe in the popup because it uses an mform (which has dependencies etc to load). 20
691MDL-43863Add Undo/Redo plugins to AttoEven though you can already do this with your native undo/redo shortcuts for your OS - it has been asked for.20
692MDL-43864Add 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
693MDL-43865Add a toolbar editor to AttoAllow re-ordering and grouping buttons via an admin page.3
694MDL-43867Add a content accessibility checker plugin for AttoResearch 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
695MDL-43869Atto does not display on qtype essay pageThis 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
696MDL-43870Blockquote in Atto behaves differently in different browsersBecause 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-4146120
697MDL-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
698MDL-43885moodle-core-notification-confirm should treat [X] like 'Cancel'It does not.5
699MDL-43886moodle-core-dialogue leaves itself in the DOM after destroying itselfNoticed 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
700MDL-43893Remove YUI2 in group/*.jsThere are a couple of innoculous pieces of JS in the group javascript we should convert to YUI33
701MDL-43903prevent error log output from addodb during phpunit executionThe 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
702MDL-43905incorrect code for updates of login timesduring 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
703MDL-43911Behat - add an option to take page dumpsHandy 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 failed5
704MDL-43931Write unit tests for logging stores and managersWe need unit tests for the following:- # manager # Legacy store # Standard store # External store20
705MDL-43941Activity show/hide toggle doesn't work in hidden or orphaned sectionsClicking 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 183
706MDL-43948Possible reflected XSS in editor and imagefile form fieldsWe 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'></object></div></noscript><input value=""'><qss `;!--=&{()}>" name="imagefile" type="hidden" /><input value="" id="id_imagefile" type="hidden" /></div></div> <div id="fitem_id_imagealt" class="fitem fitem_ftext"><div class="fitemtitle"><label for="id_imagealt">Picture description </label></div><div {code} There is a similar issue with the summary_editor[itemid] parameter of editor form elements. The problem only occurs in forms where the submitted value is being set as the initial value for the field when the form fails validation and is being redisplayed. Someone could potentially insert something malicious in the value field and have it executed when the page returns. The reason we don't think this is exploitable is that it seems that the malicious code can only originate and execute on the same client. However we did note that the Chrome XSS-Auditor blocked the code from executing "because [the script's] source code was found within the request". We had a look to see where the problem is. It appears to be with the way the values for these form elements are filtered when server side validation of the form has failed. "getCleanType" is returning "cleanhtml" and "raw" for the editor and filemanager elements, respectively. "clean_param" with type PARAM_CLEANHTML is being applied to all three of the parameters for the editor, "description_editor[text]", "description_editor[format]" and "description_editor[itemid]", while the "itemid" and "format" parameters seem to only even contain integers. "imagefile" is being cleaned with type PARAM_RAW (the default when no setType has been specified). This could be a problem with other form element types - any element where setType is not specified, or when an insufficient filter type is specified and the field is not cleaned in some other way before being sent back to the client when there is a validation error.8
707MDL-43955Atto: input text should not have for parent the contenteditable tagInput texts should be wrapped in a tag if some of the input content has for parent the contenteditable tag. * pasted texts should be encapsulated into a tag if it contains element for which the parent is the contenteditable tag. * same on key pressed. These points are for both *html* and *source* mode. h3.Why do we need that if you trigger an action on a "section" which has contenteditable for parent tag, all other sections that have contenteditable for parent tag will be impacted (if the action is dealing with parent tag of course). It is not a behavior that a user will expect, and most contenteditable editors do wrap any input text into tags to avoid this issue. h4.Example My first section < div >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
708MDL-43965Deprecate add_to_log() functionThe 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_process3
709MDL-43966Write transition guide for events and loggingA 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_plugins20
710MDL-43967Write transition guide for reports that rely on logsA docs page should be written for developers to describe how to replace their current direct log queries with logging readers.20
711MDL-43969Improve accessibility of shortform collapsingAs 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
712MDL-43990Atto - 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
713MDL-43994Hide drag/drop icon for docked blocksIMO, it doesn't make sense to display the drag/drop icon in a docked block. We should hide it when blocks are docked.3
714MDL-43997Dialogues no longer show automatically, or modallySince MDL-43262 and MDL-43259 landed in master, we no longer show some types of dialogue automatically or modally.8
715MDL-43999Atto: Double clicking on an image should open the image properties windowAtto: Double clicking on an image should open the file properties window4
716MDL-44000Atto: Image sizes should keep proportions when resizingWhen 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
717MDL-44002Decide upon intended screen reader supportEach 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=14340
718MDL-44017Remove remaining uses of content_viewed, and deprecate itWe 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
719MDL-44038Atto: Focus on the editor is lost after opening a dialogue/menuThat 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
720MDL-44040Atto: 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/17973820
721MDL-44042Keyboard drag/drop does not correctly move items to the top of current parentIn course resource drag/drop, selecting 'To top of section X' when the activity is already in that section causes it not to move.5
722MDL-44063Atto 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 <p></p> in init if there is no text and removing <p></p> on clean_html if it is the only thing in the div. 40
723MDL-44067Improve Atto Table controlsThe 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
724MDL-44079Pressing escape in nested modal dialogues should only close the top dialogueIf you open a filepicker, search for and preview a file, then press escape, all modals are closed instead of just the top one.5
725MDL-44083Atto has wrong icons for screenreader helper and accessibility checkerThere 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
726MDL-44092Add 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
727MDL-44101Create generic way for Widgets to focus on something when they closeIdeally, 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
728MDL-44106use 'restore' and 'ws' origin in logged eventsh2. 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
729MDL-44107Deprecate $event->can_view() until its purpose has been clarifiedThe 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
730MDL-44124Ical import ignores some recurrence rulesWhile 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
731MDL-44127Atto 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
732MDL-44128Atto: Toolbar menus should work with keyboard navigationIt 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
733MDL-44131Make the Atto equation editor example library into an aria toolbar.This means manage the active descendant, keyboard navigation, tabindex etc. 20
734MDL-44149Assignment resubmissions do not automatically reopen if using quick gradingIt 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
735MDL-44161Modal Dialogues cause a jump in page positionhttps://github.com/yui/yui3/pull/16368
736MDL-44164Refactor Atto codeI'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
737MDL-44215Atto: Toolbar should wrap on several linesCurrently, 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
738MDL-44216Atto: Invert indent/outdent buttonsInvert indent/outdent buttons (inconsistent with any other editor). 5
739MDL-44217The link colour in Bootstrapbase is not WCAG compliantAccording to the accessibility checker in Atto, in Boostrapbase/Clean the contract of the links are reported as not compliant with WCAG AA.8
740MDL-44218Atto: Limit the height of the editor to prevent the toolbar to go off screenLimit 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
741MDL-44219Atto: A large selection causes the editor to freeze for some secondsA 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/dfe7bcddb6f49dcbe4c37edf00564f2bd15e883b40
742MDL-44220Atto: Being able to set the alignment (flow) of the imagesBeing able to set the alignment (flow) of the images. 13
743MDL-44221Atto: Table plugin not adding a table on IETable plugin not adding a table on IE8/940
744MDL-44222Atto: Image plugin not reliable editing an existing imageSelecting the image and then clicking the image button does not always work as expected.20
745MDL-44223Atto: Missing images are not displayed at all in the editorImages with dead link are not displayed at all in the editor, it is impossible select them to fix or delete them. 8
746MDL-44224Atto: Indent/outdent plugins should not use <blockquote>Indent/outdent plugins should not use <blockquote> tag as inappropriate, setting a class 'indent' seems to be the best.100
747MDL-44225Atto: Focus lost in the Equation editor after inserting a symbolFocus lost in the Equation editor after inserting a symbol, the cursor should remain at the same place to insert multiple symbols at once. 5
748MDL-44226Atto: Simplifying the 'accessibility checker' to display sensible contentSimplifying the 'accessibility checker' to display a sensible content rather than the entire node <a ...>...</a>. 13
749MDL-44227Atto: The screenreader helper/accessibility checker should always display something for missing imagesThe 'screenreader helper' should always display something for missing images. Currently images without an alt tag are reported but not identifiable.8
750MDL-44228Atto: Being able to see the list of plugins available in the settings UIBeing able to see the list of plugins available in the settings UI. See TinyMCE for an example. 8
751MDL-44240Atto: Combine plugins indent/outdent into one.Combine plugins indent/outdent into one. 5
752MDL-44241Atto: Combine plugins link/unlink into oneCombine plugins link/unlink into one. 8
753MDL-44243Atto: Prettifying the HTML when switching to HTML viewPrettifying the HTML when switching to HTML view. We can use js-beautify (MIT License) for this purpose.5
754MDL-44298Add 'HTML templating' features to Atto text editorEditing-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
755MDL-44316Change 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
756MDL-44338Show move drag handle in header for "Add a block" blockIssue 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
757MDL-44340Replace 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
758MDL-44361Update to YUI 3.15.0Released this week and addressing a number of issues that we've patched in the mean-time.5
759MDL-44366filter_glossary has the potential to be slow on large sitesAs 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
760MDL-44368filter_activitynames can be improved after dropping of global text cacheAs 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
761MDL-44370Incorrect urls for calendar logs in log and loglive reportsCalendar 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
762MDL-44430Atto triggers required when still in focusNot 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
763MDL-44447Grade - Add an option to export the total in lettersIn 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
764MDL-44475Atto is using deprecated features and modulesJust a quick commit to tidy these up.3
765MDL-44478Remove duplicates in YUI rollupWhen 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
766MDL-44496buffer raw data instead of full events in log storesThe 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
767MDL-44500validate course id is matching context in new eventsTheoretically somebody might supply inconsistent course id - context combination when triggering event, we can use some developer checks to warn about this problem...2
768MDL-44512Custom menu submenu arrows appear on the right on RTL languagesOn 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
769MDL-44523Define and correct edulevel in eventsEducational 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
770MDL-44596Declare 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
771MDL-44597Add support for source maps with less.phpWhen compiling LESS from PHP in designer mode, we should add the source maps to make it easier to debug the CSS.5
772MDL-44627Show/hide, edit title, group mode module buttons don't trigger course_module_updated eventIf 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
773MDL-44637Tool to list all eventsAs 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
774MDL-44704The \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
775MDL-44717Incorrect urls and strings in many eventsMany 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
776MDL-44745Typo in mod assign fullname() function$userid should be $user->id (Thanks Mark) This is a master only bug introduced by MDL-284485
777MDL-44746Remove incorrect use of snapshots in eventsWe should not be using snapshots in the events other than in the functions get_legacy_logdata() and get_legacy_eventdata().5
778MDL-44748Make atto the default editor during upgradeWe do this for new installs, but should do so for ugrades too.5
779MDL-44749Collapse plugin should handle suboptimal toolbar configurationCollapse 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
780MDL-44751Update showgroups string in atto_collapseAs discussed in the demo yesterday: {code} "Show first (n) groups when collapsed." {code}2
781MDL-44752Correct 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
782MDL-44754Explain the meaning of the group names in the toolbar configurationThey have no real meaning ATM but they need to be unique. This just needs explaining in the admin setting help.3
783MDL-44755Atto plugins are using different icons for the plugin / toolbarExamples are the accessibility plugins - and some of the combined plugins. 5
784MDL-44756Atto collapse plugin setting help updateChange description to: "Show first (n) groups when collapsed"2
785MDL-44757Change TeX help link in equation editor to point to a moodle docs pageAnd then the moodle docs page can point to good external references.5
786MDL-44758Atto: Prevent new table creation when within an existing tableFor 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
787MDL-44759Atto Undo starts highlighted on an empty fieldThis is because we insert <p></p> behind the scenes, but it gets caught in the undo stack. I think treating <p></p> as '' in the undo plugin would fix this.5
788MDL-44760Atto menu styles are inconsistentAtto 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
789MDL-44761Display the list of keyboard short cuts somewhere (in the alt for the buttons?)And should take into account the current browser etc.13
790MDL-44762Atto title plugin bugs. It is possible to choose a title from the menu and nothing happensNotes 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 Chrome13
791MDL-44763Atto image plugin - remove the word "Preview" from the dialogue.It's unnecessary.2
792MDL-44764Change wording in Atto image pluginThis is about the alt / decorative only fields. New wording: “Describe this image for someone who cannot see it�? / “Description not necessary" 5
793MDL-44765atto_image: Dialogue is not resized after the accessibility warning is displayedUsing 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
794MDL-44768Atto: Save cursor position with undo/redo stack and restore itThis was a suggestion from Fred in the Atto demo.40
795MDL-44769Atto Table plugin caption field should be a text input, not a textareaSimples.3
796MDL-44770Change table context menu, to open from the table button, not the table cellAlso maybe change the wording to e.g. "Insert column after current cell". 8
797MDL-44771Atto tables with long captions wrap into the tableThis 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
798MDL-44772Atto 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
799MDL-44773Accessibility checker does not trigger selection updated when it selects the image nodesAnd so the image button in the toolbar is not highlighted. The Accessibility helper does this correctly.5
800MDL-44775Atto : show html view with a monospace fontwhat it says2
801MDL-44776Make Atto equation editor dialogue wider just a bit (keep mobile in mind too please)5
802MDL-44777Atto Equation Editor example toolbar should have consistently sized buttonsSet a min-width on the buttons in the examples toolbar, so they will line up better.3
803MDL-44778Atto equation editor, put a border around the previewWhat it says2
804MDL-44779MathJax menus show behind dialoguesThis is most noticable in the Atto equation editor13
805MDL-44780Enable MathJax filter by defaultFor 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
806MDL-44781Reformat/rewrite the help text for MathJax (needs some line breaks) Reported by Andrew N2
807MDL-44782Fix lang string for Mathjax filter setting HTTP (Should be HTTPS)What is says2
808MDL-44784Atto plugins with settings do not show settings links on manage plugins page.Probably something to do with plugininfo.20
809MDL-44794get_groups(), get_groups_all() and groups_get_user_groups are not covered by unit testsThe 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.php8
810MDL-44806Accessibility checker goes wide unnecessarily It would be better if it adapted to the content better.5
811MDL-44808The table creation box is huge, giving too much room to the accessibility infoThe 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
812MDL-44810The bold/italics buttons don't maintain their selection when pressedSteps 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
813MDL-44824Strings missing for some subpluginsLogstore 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
814MDL-44826Atto Too many image alignment optionsI think superscript and subscript can be removed - probably some others too. We want to keep these interfaces simple.5
815MDL-44827Atto: Insert image fails on iOS 7Buy me and iPhone and i'll fix it :)13
816MDL-44830Atto: Redo behaviour is a bit wonkyundo/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
817MDL-44831Atto: Save to undo stack on text deletionThe 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
818MDL-44832mod_assign grading table menus do not showSome 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
819MDL-44844Custom 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
820MDL-44846Atto font colors are broken in IEThis 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
821MDL-44874Per-request temp directoriesAccording 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
822MDL-44881The dialogue to pick a file in file picker is not nicely styledSee 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
823MDL-44923The 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
824MDL-44927Atto: 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
825MDL-44929Update to YUI 3.17.2Due 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
826MDL-44949Repository picking in Atto Image plugin brokenThere is a bug in MDL-44000 that prevents picking an image from a repository.2
827MDL-45029Weight Defaults to Zero in Weighted Mean of Grades Aggregation MethodWhen 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<Grades<Categories and Items 7. Click full view option 8. Notice Aggregation is set at default to "Simple weighted mean of grades" 9. Select drop down menu for Aggregation, change to "Weighted mean of grades" 11. Save changes 12. Notice weight default shows up as 1.0 as intended. 13. Return to your course, and add new assignment with same steps detailed above within same week or in new week. 14. Save and Return to course 15. Click Course Administration<Grades<Categories and items 16. Click full view 17. Notice Aggregation is set to "Weighted mean of grades" as this setting was earlier changed and saved. 18. Notice default weight of most recently added assignment is now showing as 0, when it should be 1.0 20
828MDL-45040Atto: Selection reverts to previous selection on toolbar button press in WebKit browsersThis presents when a selection is made by dragging such that the cursor is outside of the editor when the mouse button is released. Repro steps: # Launch Atto. # Select some text, making sure that the cursor stays within the editor (a good way to do this is by double-clicking on a word). # Select some other text, dragging outside of the editor and releasing your mouse button. # Click a toolbar button. #* Observe that your selection reverted to the first thing you selected. 5
829MDL-45070add support for MariaDB 10.x from UbuntuUbuntu is using a bit more complex database version - "5.5.5-10.0.10-MariaDB-1~saucy-log" - we need to relax the regex a bit.2
830MDL-45292Bad RTL filepicker stylesA few CSS styles in the filepicker only look good on LTR, or at the very least don't consider RTL circumstances. *2.5.x:* _theme/base/filemanager.css_ * line 72, {{.fp-toolbar div}} padding-right rule ** applies erroneously under RTL * line 72, {{.dir-rtl .fp-toolbar div}} width:100px rule ** this rule came in with MDL-32479 and seems like a really, really bad idea (see https://tracker.moodle.org/secure/attachment/37967/Private%20files%20RTL.png ) * line 74, {{.fp-toolbar img}} margin-right rule ** applies erroneously under RTL * line 79, {{.fp-viewbar}} style definition includes an 8px margin-right under LTR (Recent files LTR.png) ** not a problem under RTL since in that circumstance the element in question floats left; this rule should be removed ** need a text-align rule (and an RTL rule to match) because the viewbar is actually narrower than 72px; it takes up 72px, but due to negative margins actually appears smaller. * line 81, {{.dir-rtl .fp-viewbar}} definition includes an explicit width declaration @ 100px (Private files RTL.png) ** 72px is enough and we need horizontal space for Alfresco's selectbox (see MDL-36836) *2.6.x:* ( https://tracker.moodle.org/secure/attachment/37975/26%20Private%20files.png ) _theme/base/filemanager.css_ * line 73, {{.file-picker .fp-toolbar div, .fp-navbar .filemanager-toolbar .fp-toolbar div}} margin rule ** no matching RTL definition * line 89, {{.dir-rtl .file-picker .fp-viewbar}} margin-left:0 rule ** erroneous - puts the viewbar right up against the border5
831MDL-45381Mod_forum subscriptioncreated and subscriptiondeleted events link to incorrect locations# Create a forum # Enable optional subscription # Edit subscribers # Add a subscriber # Remove a subscriber # Check the logs Change the mod_forum 'subscriptioncreated' and 'subscriptiondeleted' events to link to mod/forum/subscribers.php. Identified in: https://tracker.moodle.org/browse/MDL-44928?focusedCommentId=285859&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-2858595
832MDL-45395PHP-OLE is GPL-incompatibleWe removed it in MDL-42381.. But as reported by Debian, we have another instance in lib/phpexcel/PHPExcel/Shared/OLE* https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=746594 Note that in http://docs.moodle.org/dev/Moodle_libraries_credits#PEAR_OLE_Classes It's specified that an 'exception' was made for Moodle. That implies relicensing and is all bit hazy. If we don't need it we should get rid of it..40
833MDL-45504Decide Moodle 2.8 requirements and push them to environment.xmlWe 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
834MDL-45562Editing external blog throws exceptionRegister an external blog. Click on "edit cog", change something and try to save. Reproduced on 2.7, pretty sure the same will be in previous versions {code} Invalid user More information about this error Debug info: SELECT id FROM {user} WHERE id IS NULL AND deleted = ? [array ( 0 => 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: <br /> <b>Notice</b>: Undefined property: stdClass::$filtertags in <b>/home/marina/repositories/int_master/moodle/blog/external_blog_edit.php</b> on line <b>102</b><br /> <br /> <b>Notice</b>: Undefined variable: newexternal in <b>/home/marina/repositories/int_master/moodle/blog/external_blog_edit.php</b> on line <b>107</b><br /> <br /> <b>Notice</b>: Trying to get property of non-object in <b>/home/marina/repositories/int_master/moodle/blog/external_blog_edit.php</b> on line <b>107</b><br /> {code}8
835MDL-45580PDF Annotations Remain After PDF is ReplacedWhen 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
836MDL-45594Fix use of ORDER BY id in the messaging systemh5. *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
837MDL-45611Question 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
838MDL-45652When restoring a backup, if no category or course is selected the page reloads with no error messageIf 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
839MDL-45721The \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
840MDL-45754Backup and restore of logs in 2.7 and aboveNew logging API does not support backup and restore of logs100
841MDL-45772Some forms with passwords and usernames get populated by the browser, which is not desiredWhen 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 Brendan20
842MDL-45780Neither formchangechecker, nor quiz autosave detects changes in Atto editorsBoth 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
843MDL-45827Specify the requirements for the element libraryThis 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_guide5
844MDL-45828Create the element library admin toolImplement the admin tool defined in MDL-458278
845MDL-45829Define the initial list of renderables to be added to the element libraryThe 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
846MDL-45830Define style guide for renderablesThis 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_guide40
847MDL-45833Debugging error when changing roles in categoryI 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
848MDL-45853Document renderer best practicesAs 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
849MDL-45854Define and document JavaScript output guideAs 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
850MDL-45862Convert existing displays to renderersThis 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
851MDL-45885Decide and document output componentsThis 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
852MDL-45893Developing a User MenuAdding 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
853MDL-45894For students: a single page with all their course grades on itCreate 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
854MDL-45897Add more blocks to the default 'my home' pageAdding 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
855MDL-45916Event monitor: Finalise the basic file and database structureCommit the basic file structure with the following:- # Directory structure # xmldb files # permissions (db/access.php)20
856MDL-45918Event monitor: Create a rule manager class with unit testsCreate a class report_monitor\rule_manager that lets you # Create rules # Edit rules # Delete rules # get rules # Get rule With unit tests13
857MDL-45919Event monitor: Create a subscription manager classCreate 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 tests20
858MDL-45920Define Report Builder APIWork 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
859MDL-45935Slow behat tests for backupWhen 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
860MDL-45936The auth/db plugin should use the core functions user_create_user and user_update_userThe 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
861MDL-45938Event monitor: Create a form to edit/add a new ruleWe 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
862MDL-45939Event monitor: Create rule classWe 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
863MDL-46016Shibboleth contains misleading comment regarding user passwordsI 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
864MDL-46022Add ability to create dividers in custom_menuAs 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 level3
865MDL-46035Survey activity shows wrong error message to adminsIf 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
866MDL-46036Exception is thrown if you try to download responses from a survey activity with no responsesI 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
867MDL-46058Include YUI -proxy modules in rollupAs 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
868MDL-46059Editing LTI page invalid grade viewThe 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
869MDL-46109Event monitor: Create a class to generate eventlistCreate a class to find and list all events with caching13
870MDL-46110Event monitor: Create renderables/renderers to display the rule managment pageWrite a renderer to display rule management interface.20
871MDL-46111Event monitor: Create renderables/renderers to display the subscription managment pageWrite a renderer to display subscription management interface.40
872MDL-46118Problems in downloading course log files, only 30 lines are downloadedHi, 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
873MDL-46129Event monitor: Handle creating/deleting subscriptionsWrite a renderer to display subscription management interface.13
874MDL-46130Event monitor: Handle rule managmentWrite yui modules to handle the managment of rules # Deleting a rule # copying a rule8
875MDL-46131Event monitor: Sort out navigationWe 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
876MDL-46132Event monitor: Implement the event observerImplement an event observer that populates tool_monitor_events, as needed40
877MDL-46133Event monitor: Implement cron task to clean events tableImplement 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
878MDL-46134Event monitor: Implement cron task to send notificationsImplement 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
879MDL-46139Add 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 maxgrade40
880MDL-46175Gradebook terminology improvementsAs 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
881MDL-46181Usability improvements for grade export and importExport # 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
882MDL-46191Develop 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
883MDL-46206Alt image in footer is incorrectly repeatedAccording 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 page5
884MDL-46218Disabled functionality checks occur later than necessaryWhile 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
885MDL-46241Event monitor: Create a subscription instance classCreate a class that represents a subscription instance5
886MDL-46248Backport of MDL-42869: HTML validation check fails on calendar add event screenBackporting this issue would allow us to apply the fix for MDL-46197 to 2.6.3
887MDL-46253Add-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
888MDL-46255Purge 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
889MDL-46269Convert http embedded content to https on https sites where availableThis 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
890MDL-46285Option to hide user_picture from screen readersThere 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
891MDL-46313Create new icons for e-mail subscription statusThe 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
892MDL-46316Fix coding style problems in notescode checker currently reports 50 errors and 103 warnings just in notes.5
893MDL-46346coding style problems in blogOriginally noted in MDL-46218. There are lots of coding style issues in blog.5
894MDL-46352Deprecate print_group_pictureTo 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
The file is too large to be shown. View Raw