Compare commits

..

632 Commits

Author SHA1 Message Date
Eloy Lafuente (stronk7) cfb1f6f225 Moodle release 2.2.8 2013-03-08 19:59:24 +01:00
Eloy Lafuente (stronk7) 0c9dff5458 weekly release 2.2.7+ 2013-03-07 16:21:08 +01:00
Eloy Lafuente (stronk7) ab63c43a03 Merge branch 'install_22_STABLE' of git://git.moodle.cz/moodle-install into MOODLE_22_STABLE 2013-03-07 16:16:13 +01:00
Frederic Massart cb69d2584a MDL-37852 repository: Admins can't access user instances settings 2013-03-07 16:33:45 +08:00
Frederic Massart c512e94e7c MDL-37852 repository: Fixed missing capability error 2013-03-07 16:33:32 +08:00
Frederic Massart 103efbc271 MDL-37852 repository: Prevent user from deleting a site-wide instance 2013-03-07 14:39:37 +08:00
Rossiani Wijaya a28da5d9b8 MDL-37411 Note Module: additional patch to fixed undefined property for stable branches 2013-03-07 11:09:31 +08:00
AMOS bot 0b059029ac Automatically generated installer lang files 2013-03-06 00:36:59 +00:00
Rossiani Wijaya e13f286026 MDL-37411 Notes: unset courseid and userid when updating the note to prevent accidental changes. Thank you Sam Hemelryk for suggesting an alternative solution.
Conflicts:
	notes/edit.php
2013-03-06 09:40:21 +13:00
Frederic Massart 0053adbc38 MDL-37852 repository: Prevent undesired access to repositories settings 2013-03-05 09:58:05 +01:00
Frederic Massart 33c2fe2414 MDL-34284 library: Import ZF2012-01 security patch for Zend 2013-03-05 10:33:07 +08:00
Frederic Massart 5668eb3c94 MDL-36426 files: Undefined variable in Non-JS File Picker 2013-03-04 02:34:57 +01:00
Frederic Massart cbb31c9a55 MDL-36426 repository: Prevent login_as() users to access 2013-03-04 02:33:52 +01:00
Frederic Massart 46eec6e46b MDL-37681 repository_webdav: improved form handling when configuring an instance 2013-03-04 13:44:45 +13:00
Frederic Massart 93e9ea9989 MDL-37507 repositories: improved formatting of external resources 2013-03-04 13:28:24 +13:00
Mark Nielsen b3daaada49 MDL-36901: Remove system paths from exceptions
Replaces any server paths, like dataroot, with a token
in exception messages and debug info.

Conflicts:
	lib/tests/setuplib_test.php
2013-03-04 00:16:51 +01:00
Frederic Massart 4d3273387a MDL-37481 user: fixed bug when logged in as guest 2013-03-04 11:22:13 +13:00
AMOS bot 1d26931b32 Automatically generated installer lang files 2013-03-01 00:42:23 +00:00
Eloy Lafuente (stronk7) 8a407e29d6 weekly release 2.2.7+ 2013-02-28 15:48:55 +01:00
Eloy Lafuente (stronk7) 49025ce156 Merge branch 'install_22_STABLE' of git://git.moodle.cz/moodle-install into MOODLE_22_STABLE 2013-02-28 15:40:57 +01:00
Eloy Lafuente (stronk7) 87fe3c030d MDL-38003 upgrade: whitespace fix. 2013-02-26 03:13:36 +01:00
Eloy Lafuente (stronk7) 6b068d6643 Merge branch 'MDL-38003_m22' of https://github.com/markn86/moodle into MOODLE_22_STABLE 2013-02-26 03:02:19 +01:00
AMOS bot e54450752b Automatically generated installer lang files 2013-02-25 00:39:49 +00:00
Damyon Wiese 1639a2c9de weekly release 2.2.7+ 2013-02-22 10:57:15 +08:00
AMOS bot d61b05d7c8 Automatically generated installer lang files 2013-02-20 00:45:28 +00:00
Mark Nelson 01dd8c9b07 MDL-38003 upgrade: ensure specific columns are set to not null during upgrade from < 1.7 to 2.x 2013-02-15 15:46:18 +08:00
Damyon Wiese 2a9af190b5 weekly release 2.2.7+ 2013-02-14 14:02:21 +08:00
Damyon Wiese 955980b238 Merge branch 'install_22_STABLE' of git://git.moodle.cz/moodle-install into MOODLE_22_STABLE 2013-02-14 14:00:53 +08:00
AMOS bot 32bf9aac97 Automatically generated installer lang files 2013-02-14 00:50:00 +00:00
David Mudrák e97b667744 MDL-37774 Do not pass trailing slash if the method does not want it 2013-02-10 01:57:36 +01:00
David Mudrák a7b8726121 MDL-37774 Make moodle1_file_manager::migrate_directory() support trailing slash in rootpath
As the $rootpath is concatenated with the $relpath, we would end with a
path like course_files//file.txt. Such a path is detected as not-valid
later and an error would be thrown.

So the patch makes sure that the trailing slash is cut off and a
debugging for the developer is displayed.
2013-02-10 01:57:35 +01:00
AMOS bot 6158a4aed5 Automatically generated installer lang files 2013-02-10 00:41:43 +00:00
David Mudrák bf46548670 MDL-37774 Add unit test to illustrate the problem with the trailing slash
The patch introduces two new tests for moodle1_file_manager::migrate_directory().
The second test with the trailing slash reveals the trouble here.
The expected behaviour is that the method would deal with the trailing
slash. Debugging message for the developer should be displayed though.
2013-02-08 13:16:31 +01:00
Damyon Wiese c9d6862b99 weekly release 2.2.7+ 2013-02-08 11:20:42 +08:00
AMOS bot 14ac8b4e39 Automatically generated installer lang files 2013-02-08 00:45:20 +00:00
Eloy Lafuente (stronk7) a1a63ea0a0 weekly release 2.2.7+ 2013-01-31 11:00:49 +01:00
Eloy Lafuente (stronk7) 60b1ed1303 Merge branch 'install_22_STABLE' of git://git.moodle.cz/moodle-install into MOODLE_22_STABLE 2013-01-31 10:44:46 +01:00
Petr Škoda 0c39b19942 MDL-37155 fix course sortorder to prevent problems in later unsigned migration 2013-01-26 11:11:48 +01:00
AMOS bot 1efcb6eb24 Merge branch 'MOODLE_22_STABLE' into install_22_STABLE 2013-01-26 00:50:51 +00:00
Dan Poltawski 8c40b4ea9d weekly release 2.2.7+ 2013-01-25 15:58:58 +08:00
AMOS bot b7e018969b Automatically generated installer lang files 2013-01-24 00:46:52 +00:00
Mark Nelson ba3f753cf7 MDL-33652 mod_resource: fixed issue with max filenames in 1.9 breaking temp column during upgrade 2013-01-21 17:53:44 +08:00
AMOS bot 2fa4b2c6e0 Automatically generated installer lang files 2013-01-21 00:44:56 +00:00
Dan Poltawski 33ba00557f weekly release 2.2.7+ 2013-01-18 14:32:49 +08:00
Eloy Lafuente (stronk7) e3a2abd60f Merge branch 'MDL-37485_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2013-01-14 23:22:13 +01:00
Eloy Lafuente (stronk7) b09baf94b9 Moodle release 2.2.7 2013-01-11 22:20:41 +01:00
Tim Hunt 406f11ff77 MDL-37485 plugins overview: require_login before _capability. 2013-01-11 12:58:43 +00:00
Eloy Lafuente (stronk7) e40ed81577 weekly release 2.2.6+ 2013-01-11 12:32:06 +01:00
Eloy Lafuente (stronk7) 696adcdc71 Merge branch 'install_22_STABLE' of git://git.moodle.cz/moodle-install into MOODLE_22_STABLE 2013-01-11 12:17:06 +01:00
Eloy Lafuente (stronk7) d90030f1c7 MDL-37420 rework pg schema (partial backport of 92b00c3) 2013-01-11 10:34:34 +01:00
David Mudrák 52f9e3ee56 MDL-37467 Do not provide blog posts via RSS when blogging is disabled 2013-01-10 18:17:42 +01:00
Eloy Lafuente (stronk7) dc21606e4f Merge branch 'MDL-36741_m22' of git://github.com/markn86/moodle into MOODLE_22_STABLE 2013-01-10 11:13:57 +01:00
Mark Nelson 8946805511 MDL-36741 mod_forum: fixed the function forum_rss_newstuff that was using count_records_sql incorrectly as well as generating RSS content when no data exists 2013-01-10 18:00:38 +08:00
Andrew Robert Nicols c7fbbf73e3 MDL-36600 Add missing sesskey check when previewing the message 2013-01-10 10:20:27 +08:00
Dan Poltawski ac7efafb83 MDL-35991 - fix incorrect returnurl type
good catch, Adrian!
2013-01-10 09:46:03 +08:00
Jason Fowler 0bd4649a36 MDL-31824 - Calendar - Fixing HTML classes fopr calendar month view - patch provided by Mark Ward 2013-01-09 09:52:30 +08:00
Eloy Lafuente (stronk7) 9d940d6096 Merge branch 'w51_MDL-37420_m22_pgschema' of git://github.com/skodak/moodle into MOODLE_22_STABLE 2013-01-09 01:33:52 +01:00
Andrew Robert Nicols deaaa6f62f MDL-36600 user: improve course messaging checks 2013-01-09 09:23:07 +13:00
Petr Škoda 574fcfba8a MDL-37152 remove bogus $mail->IsSMTP() breaking non-smtp mailing
Credit goes to Aurelijus Bruzas, thanks.
2013-01-08 18:03:59 +01:00
Petr Škoda 3b40fbf61d MDL-37420 add support for more PostgreSQL schemas 2013-01-08 17:59:00 +01:00
Jason Fowler 591b34218c MDL-36620 - Blog, RSS - Preventing Guests from viewing the RSS of site level blogs
Conflicts:
	blog/rsslib.php
2013-01-08 14:08:07 +08:00
David Mudrák 890066d6dc MDL-36977 Be more picky when it comes to migrating files in moodle1 backups 2013-01-08 08:54:44 +08:00
David Mudrák ca0ae78e00 MDL-36977 Add more unit tests for moodle1 backup conversion 2013-01-08 08:54:44 +08:00
Ankit Agarwal 53459511a9 MDL-33340 completion: Incorrect logic in hidden field check
Credit to Jody Steele
2013-01-07 10:37:47 +08:00
Simon Coggins b0f20bc995 MDL-35991 - use PARAM_LOCALURL for local urls
Conflicts:
	user/files.php
2013-01-07 10:12:49 +08:00
Sam Hemelryk 4e805e91c7 Merge branch 'MDL-37161-moodle22' of https://github.com/StudiUM/moodle into MOODLE_22_STABLE 2013-01-07 14:13:55 +13:00
Sam Hemelryk e6f5bd2633 Merge branch 'MDL-37068_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2013-01-07 13:39:32 +13:00
Charles Fulton 3e794304dc MDL-4781 forum: show discussion link when user has ability to view discussion
Conflicts:
	mod/forum/lib.php
2013-01-07 11:18:15 +13:00
Sam Hemelryk 75c6461ac1 Merge branch 'MDL-16730-m22' of git://github.com/ankitagarwal/moodle into MOODLE_22_STABLE 2013-01-07 10:14:40 +13:00
Sam Hemelryk 0fbadb557b Merge branch 'w51_MDL-37280_m22_langstring' of git://github.com/skodak/moodle into MOODLE_22_STABLE 2013-01-07 10:01:13 +13:00
Sam Hemelryk 146b7ac600 Merge branch 'MDL-36741_m22' of git://github.com/markn86/moodle into MOODLE_22_STABLE 2013-01-07 09:15:21 +13:00
Jean-Philippe Gaudreau d14e5a71c0 MDL-37161 Backup: Database error caused by grade book settings when importing or restoring a course 2013-01-04 09:51:55 -05:00
Ankit Agarwal 4ad011d041 MDL-27884 Implement proper username validation during csv import 2013-01-02 14:10:03 +08:00
AMOS bot 34c99fb91f Automatically generated installer lang files 2013-01-01 00:43:02 +00:00
Eloy Lafuente (stronk7) 3b7cb72535 weekly release 2.2.6+ 2012-12-30 01:04:20 +01:00
Dan Poltawski 13892dbcf2 MDL-36680 - fix bad whitespace 2012-12-24 11:27:44 +08:00
Dan Poltawski f7128b89bf Merge branch 'MDL-37146_22' of git://github.com/andyjdavis/moodle into MOODLE_22_STABLE 2012-12-24 11:27:02 +08:00
Dan Poltawski 1453ae5bf3 Merge branch 'wip-MDL-37290-m22' of git://github.com/samhemelryk/moodle into MOODLE_22_STABLE 2012-12-24 10:55:46 +08:00
Dan Poltawski 7f44175aed Merge branch 'w51_MDL-37283_m22_spell' of git://github.com/skodak/moodle into MOODLE_22_STABLE 2012-12-24 10:36:06 +08:00
Sam Hemelryk 5c6c90e3c8 MDL-37290 course: fixed up navbar when editing categories 2012-12-24 13:07:25 +13:00
Sam Hemelryk 9c829ef34a Merge branch 'wip-MDL-35833-stable22' of git://github.com/phalacee/moodle into MOODLE_22_STABLE 2012-12-24 11:43:27 +13:00
Sam Hemelryk 34950b3d64 MDL-25928 course: fixed use of lang_string 2012-12-24 10:08:04 +13:00
Sam Hemelryk 7093fdd806 Merge branch 'wip-MDL-35653-MOODLE_22_STABLE' of git://github.com/abgreeve/moodle into MOODLE_22_STABLE 2012-12-24 09:40:24 +13:00
Petr Škoda 6fac8f7f04 MDL-37283 import tinymce spellchecker 2.0.6.1 2012-12-22 16:50:09 +01:00
Tim Hunt bae87ddc80 MDL-37068 qformat_learnwise: fix UTF8 and other issues. 2012-12-22 15:15:09 +00:00
Petr Škoda 7d7e562296 MDL-37280 remove bogus lang_string causing fatal error
Credit goes to Lorenzo Nicora, thanks.
2012-12-22 14:03:00 +01:00
Eloy Lafuente (stronk7) 8f1b34c69e weekly release 2.2.6+ 2012-12-20 21:11:27 +01:00
Jason Fowler 7c7412b74e MDL-35833 - Blocks - Adding alt and title attributes to the docked-block panel close button 2012-12-20 10:40:28 +08:00
Tim Hunt ab0ab933be MDL-32245 question bank: update URL after moving question between categories.
Also, improve the URL when you go to edit the questions in a category.
2012-12-20 12:12:42 +13:00
Adrian Greeve 2e22e64954 MDL-35653 - mod/wiki: Force format now lets users edit wiki pages.
Thanks to Tõnis Tartes for part of this solution.

When force format was selected in the options, trying to view the
wiki would redirect to the front page with a message saying that
you do not have permission to edit this page. Students had no way
of viewing any entries or creating the first page.

When in force format it skips a page , which would be considered
uncessary for students, but this means that the group id is not set
and this is what is causing most of the problems.

I also have included a check to see if the title is default and whether
the user has permission to view all groups. In these situations the
intermediate page is displayed.
2012-12-19 08:57:40 +08:00
Eloy Lafuente (stronk7) 11c826cb47 MDL-36245 add tests for the buggy utf-8 to utf-8 conversion 2012-12-18 23:49:21 +01:00
Petr Škoda 30075232af MDL-36245 try to workaround buggy iconv() when converting text from utf-8 to utf-8 2012-12-18 23:43:51 +01:00
Dan Poltawski a7cc54ab1b Merge branch 'MDL-37014_webdav_folders_22' of git://github.com/davosmith/moodle into MOODLE_22_STABLE 2012-12-18 14:52:59 +08:00
Dan Poltawski 782820ceaf MDL-30899 - fix incorrect whitespace 2012-12-18 09:15:53 +08:00
Dan Poltawski 07a01b746c Merge branch 'MDL-30899_22' of git://github.com/dmonllao/moodle into MOODLE_22_STABLE 2012-12-18 09:11:41 +08:00
Petr Škoda e1263ce41d MDL-37171 fix multiple spreadsheet related PHP4isms 2012-12-18 00:15:34 +01:00
Adrian Fish 933cf2e115 MDL-37035 Pass user locale after course locale. 2012-12-18 10:32:33 +13:00
Sam Hemelryk e49fea7d9b Merge branch 'MDL-37176_22' of git://github.com/stronk7/moodle into MOODLE_22_STABLE 2012-12-18 10:11:53 +13:00
Sam Hemelryk b61c5fa26b Merge branch 'MDL-35530_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-12-18 10:06:54 +13:00
Sam Hemelryk 5ac84901f0 Merge branch 'wip-MDL-35056-stable22' of git://github.com/phalacee/moodle into MOODLE_22_STABLE 2012-12-18 09:56:48 +13:00
Sam Hemelryk 54d50fdb8d Merge branch 'MDL-32245_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-12-18 09:51:20 +13:00
Sam Hemelryk c64089e155 MDL-36812 grader_report: Fixed whitespace on integration 2012-12-18 09:48:12 +13:00
Nadav Kavalerchik 12a3a0bc61 MDL-36812 - Enabling grade_report_fixedstudents, shows the user's list on the left side of the page, in RTL mode (theme/standard) 2012-12-18 09:48:12 +13:00
Sam Hemelryk 3ed2c641f4 Merge branch 'MDL-29733_22' of git://github.com/andyjdavis/moodle into MOODLE_22_STABLE 2012-12-18 09:41:52 +13:00
Dan Poltawski 37e91e0731 Merge branch 'MDL-37114_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-12-17 15:25:45 +08:00
Dan Poltawski 9205de2fd8 Merge branch 'w50_MDL-36597_m22_courselang' of git://github.com/skodak/moodle into MOODLE_22_STABLE 2012-12-17 13:54:03 +08:00
Dan Poltawski 2a24377350 Merge branch 'MDL-29334_m22' of git://github.com/markn86/moodle into MOODLE_22_STABLE 2012-12-17 13:48:36 +08:00
Dan Poltawski 6c974b2d65 Merge branch 'wip-MDL-25928-m22' of git://github.com/samhemelryk/moodle into MOODLE_22_STABLE 2012-12-17 12:05:26 +08:00
Dan Poltawski dabaa04e29 Merge branch 'wip-MDL-35874-stable22' of git://github.com/phalacee/moodle into MOODLE_22_STABLE 2012-12-17 11:53:18 +08:00
Dan Poltawski 1f42fb1443 Merge branch 'wip-MDL-35979-s22' of git://github.com/phalacee/moodle into MOODLE_22_STABLE 2012-12-17 11:48:56 +08:00
Sam Hemelryk 278f612b40 MDL-25928 course: Fixed course info on the combo list to be a popup 2012-12-17 16:03:48 +13:00
Petr Škoda a6989dc3ea MDL-36597 strip '_utf8' from all course.lang fields 2012-12-15 11:21:05 +01:00
Joseph Rezeau 29c1067b68 MDL-37114 quiz form validation: feedback boundaries.
The feedback boundaries must either be a number or a percentage.
We were not correctly validating the non-percentage case.
2012-12-15 10:07:19 +00:00
Tim Hunt 1e6fd4f6d2 MDL-32245 question bank: fix coding style in categories.php 2012-12-15 10:06:59 +00:00
Thanh Le 23a3569569 MDL-32245 question bank: fix moving categories between contexts. 2012-12-15 10:06:58 +00:00
Eloy Lafuente (stronk7) 270b9df833 MDL-37176 timezones: updated to 2012j 2012-12-14 20:09:16 +01:00
Eloy Lafuente (stronk7) 041a234f6a weekly release 2.2.6+ 2012-12-14 13:29:57 +01:00
Andrew Davis 6a69966c18 MDL-36680 core_grade: fixed grade_report::blank_hidden_total() 2012-12-14 08:03:20 +08:00
Eloy Lafuente (stronk7) ef3f003a76 Merge branch 'MDL-30700-22' of git://github.com/damyon/moodle into MOODLE_22_STABLE 2012-12-13 10:32:50 +01:00
Jason Fowler 40f1fe9893 MDL-35874 - Blocks - Adding a label to the 'Add a block' block's select field 2012-12-13 15:10:42 +08:00
Dan Poltawski 25e3fc90ae Merge branch 'MDL-36321_message_participants_22' of git://github.com/andyjdavis/moodle into MOODLE_22_STABLE 2012-12-13 13:43:17 +08:00
Andrew Davis 4278ea3617 MDL-36321 core_message: made the course participants list correctly show if course participants are contacts or not 2012-12-13 11:12:33 +08:00
Jason Fowler 0ae3b07d83 MDL-35056 - Backup/Restore - Converting the 'Unmet Dependencies' Message to be a Developer Debug message to make moodle less confusing to the average user 2012-12-13 11:12:13 +08:00
Dan Poltawski fb7bc97d3e Merge branch 'MDL-36897_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-12-13 10:04:50 +08:00
Damyon Wiese b431d0717e MDL-30700 tablelib: Fixed get_sort_for_table to work with text sorting columns for oracle
This change stores the list of columns that require text sorting in the session,
so the static function "get_sort_for_table" can work without any additional parameters.
2012-12-13 09:59:30 +08:00
Davo Smith a0d9283306 MDL-37014 repository_webdav - strip the server URL from file & folder paths returned by webdav lib (if present)
Conflicts:
	repository/webdav/lib.php
2012-12-12 08:43:58 +00:00
Tim Hunt 347a5af6a2 MDL-36897 quiz review: fixup previous commit. 2012-12-12 08:14:07 +00:00
Mark Nelson 9a48481915 MDL-29334 mod_data: if site-wide presets created in <= 1.9 exist convert them to 2.x 2012-12-12 13:03:20 +08:00
Dan Poltawski 3c885787c9 Merge branch 'wip-MDL-33448-m22' of git://github.com/samhemelryk/moodle into MOODLE_22_STABLE 2012-12-12 09:38:15 +08:00
Sam Hemelryk 9aca16cc0f Merge branch 'MDL-27619_22' of git://github.com/pauln/moodle into MOODLE_22_STABLE 2012-12-12 11:09:20 +13:00
Sam Hemelryk 526c2d601c MDL-29805 redirect: added check REQUIRE_CORRECT_ACCESS is true 2012-12-12 09:47:04 +13:00
Sam Hemelryk 05e6fefd56 Merge branch 'MDL-29805-22' of git://github.com/mouneyrac/moodle into MOODLE_22_STABLE 2012-12-12 09:44:14 +13:00
Sam Hemelryk 6896e438c1 Merge branch 'MDL-35593-22' of git://github.com/mouneyrac/moodle into MOODLE_22_STABLE 2012-12-12 09:38:14 +13:00
Sam Hemelryk 2a5953c545 Merge branch 'wip_22_mdl-37088_bad_operator_ldap_sync_user' of https://github.com/iarenaza/moodle into MOODLE_22_STABLE 2012-12-12 09:34:19 +13:00
Eloy Lafuente (stronk7) e6e5a4d219 Merge branch 'MDL-30700-22' of git://github.com/damyon/moodle into MOODLE_22_STABLE 2012-12-11 20:00:16 +01:00
Dan Poltawski f69decef93 Merge branch 'MDL-36243_22' of git://github.com/jmvedrine/moodle into MOODLE_22_STABLE 2012-12-11 16:24:42 +08:00
Dan Poltawski 395e4069e1 Merge branch 'wip-MDL-36108-stable22' of git://github.com/phalacee/moodle into MOODLE_22_STABLE 2012-12-11 16:03:51 +08:00
Jason Fowler acb4fe8ac2 MDL-36108 - Blocks - Online User block's user image's alt attribute is now empty to prevent repetition of text for screen readers 2012-12-11 15:52:03 +08:00
Damyon Wiese eee49d735c MDL-30700 Assignment 2.2: Added text_sorting function to tablelib
Allows oracle to sort by text (clob) columns (should be used sparingly).
2012-12-11 15:44:36 +08:00
Dan Poltawski e93213e2e0 Merge branch 'MDL-36897_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-12-11 13:54:33 +08:00
Dan Poltawski 3b36eaac60 Merge branch 'MDL-36845_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-12-11 11:59:04 +08:00
Dan Poltawski e89bf76523 Merge branch 'wip-MDL-36110-s22' of git://github.com/phalacee/moodle into MOODLE_22_STABLE 2012-12-11 11:33:30 +08:00
Sam Hemelryk f352dcddba Merge branch 'MDL-36650_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-12-11 16:11:04 +13:00
Dan Poltawski 12a90d7af0 Merge branch 'MDL-36025-negative-zero-MOODLE_22_STABLE' of git://github.com/mpetrowi/moodle into MOODLE_22_STABLE 2012-12-11 11:06:59 +08:00
Petr Škoda 5a0ac061b2 MDL-31424 compare PayPal emails case-insensitively
Credit goes to Chris Follin, thanks!
2012-12-11 10:32:39 +08:00
Sam Hemelryk a4982907f8 Merge branch 'MDL-36942_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-12-11 15:04:11 +13:00
Sam Hemelryk 7439256bbd Merge branch 'MDL-36954_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-12-11 14:59:45 +13:00
Dan Poltawski 4c34df5e5c Merge branch 'MDL-36773-22' of git://github.com/mouneyrac/moodle into MOODLE_22_STABLE 2012-12-11 09:56:58 +08:00
Petr Škoda 0e847049b5 MDL-37061 always validate lang when setting session user
This should resolve problems with TinyMCE langs and some unknown MUCH caching issue.
2012-12-11 14:44:44 +13:00
Petr Škoda cb4193da9f MDL-29442 add missing utf-8 to entity html encoding and decoding 2012-12-11 10:23:31 +13:00
Sam Hemelryk 79b123d1be Merge branch 'MDL-36601-MOODLE_22_STABLE' of git://git.luns.net.uk/moodle into MOODLE_22_STABLE 2012-12-11 09:41:29 +13:00
Sam Hemelryk 6575ae513f Merge branch 'MDL-36805-MOODLE_22_STABLE' of git://git.luns.net.uk/moodle into MOODLE_22_STABLE 2012-12-11 09:14:47 +13:00
Iñaki Arenaza 62d0c271b9 MDL-37088 auth_ldap: bad operator in ldap sync_user() method 2012-12-10 16:47:03 +01:00
Andrew Robert Nicols b5dc3a57f7 MDL-36805 Correct docs for workshop_grade_item_update in mod_workshop
The documentation suggested that the modname field should be present on the
$workshop parameter when this is not required. It is not used in any point
in the function and the $workshop variable is never passed to another
function which may use it.
2012-12-10 12:29:13 +00:00
Dan Poltawski 6c0bdc4d58 Merge branch 'MDL-36732_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-12-10 15:18:34 +08:00
Dan Poltawski b93c5e3ed9 Merge branch 'MDL-36742_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-12-10 14:41:57 +08:00
Dan Poltawski f5c44fd053 Merge branch 'MDL-36538_webdav_memory_22' of git://github.com/davosmith/moodle into MOODLE_22_STABLE 2012-12-10 13:13:20 +08:00
Dan Poltawski 9d95db7ecd Merge branch 'w49_MDL-35456_m22_paypal' of git://github.com/skodak/moodle into MOODLE_22_STABLE 2012-12-10 12:03:57 +08:00
Dan Poltawski 146e1cd674 Merge branch 'MDL-35404_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-12-10 11:37:00 +08:00
Sam Hemelryk 59fef8ff26 Merge branch 'MDL-30961-22' of git://github.com/mouneyrac/moodle into MOODLE_22_STABLE 2012-12-10 14:59:19 +13:00
Sam Hemelryk 7c1b3e2523 Merge branch 'MDL-34592_M22' of git://github.com/lazydaisy/moodle into MOODLE_22_STABLE 2012-12-10 14:28:10 +13:00
Sam Hemelryk ba66ee7523 Merge branch 'MDL-36978_M22' of git://github.com/lazydaisy/moodle into MOODLE_22_STABLE 2012-12-10 14:20:58 +13:00
Mark Nielsen 5a1922cd24 MDL-36579: Adding missing fields in mod/lti backup 2012-12-10 14:16:41 +13:00
Mary Evans 8934bcdc59 MDL-34592 theme_magazine: Fixes the report grader fixed column misalignment in magazine/style/core.css theme, plus fixes all CORE themes with minor adjustment to grade/report/grader/style.css 2012-12-10 00:15:14 +00:00
Dan Poltawski be044b6473 MDL-36764 ddl/oracle: fix misleading comment 2012-12-10 11:55:14 +13:00
Sam Hemelryk 9c11280dc9 Merge branch 'MDL-36778-22' of git://github.com/danpoltawski/moodle into MOODLE_22_STABLE 2012-12-10 11:51:08 +13:00
Sam Hemelryk 180a9220e9 Merge branch 'MDL-36640-MOODLE_22_STABLE' of git://git.luns.net.uk/moodle into MOODLE_22_STABLE 2012-12-10 11:42:22 +13:00
Sam Hemelryk 7c3ff6f6a6 Merge branch 'message_nav_22' of git://github.com/andyjdavis/moodle into MOODLE_22_STABLE 2012-12-10 10:58:37 +13:00
Sam Hemelryk 4d0eabf19e Merge branch 'MDL-36761_loop_22' of git://github.com/andyjdavis/moodle into MOODLE_22_STABLE 2012-12-10 10:53:47 +13:00
Sam Hemelryk 9980628209 Merge branch 'MDL-34591_22' of git://github.com/grabs/moodle into MOODLE_22_STABLE 2012-12-10 10:48:19 +13:00
Sam Hemelryk 59fdbc53b2 Merge branch 'wip-MDL-35221-MOODLE_22_STABLE' of git://github.com/kwiliarty/moodle into MOODLE_22_STABLE 2012-12-10 10:41:11 +13:00
Sam Hemelryk e32da64ee4 Merge branch 'wip-MDL-36906-MOODLE_22_STABLE' of git://github.com/abgreeve/moodle into MOODLE_22_STABLE 2012-12-10 10:33:20 +13:00
Sam Hemelryk 624e1d1197 Merge branch 'wip-MDL-36915-MOODLE_22_STABLE' of git://github.com/abgreeve/moodle into MOODLE_22_STABLE 2012-12-10 10:26:55 +13:00
Sam Hemelryk 0cdd8fe9d4 Merge branch 'wip-MDL-37026-MOODLE_22_STABLE' of git://github.com/abgreeve/moodle into MOODLE_22_STABLE 2012-12-10 10:23:25 +13:00
Sam Hemelryk 6b02b455a4 Merge branch 'MDL-33125_22' of git://github.com/aolley/moodle into MOODLE_22_STABLE 2012-12-10 10:19:13 +13:00
Andreas Grabs 8ade0c35bd MDL-34591 - paypal does not allow unenrol 2012-12-09 19:06:51 +01:00
Mary Evans 0248eee129 MDL-36978 theme_standardold: fixes misplaced block region check in layout/frontpage.php which, with hindsight should have been fixed in MDL-23226. 2012-12-08 22:57:07 +00:00
Jean-Michel Vedrine 29d1e1ff76 MDL-36243 question->questiontext and question->generalfeedback should always be strings 2012-12-08 20:44:01 +01:00
Petr Škoda 61cbbebadc MDL-35456 use HTTP 1.1 for PayPal IPN 2012-12-08 12:00:54 +01:00
Eloy Lafuente (stronk7) c274d5eef9 weekly release 2.2.6+ 2012-12-08 02:54:28 +01:00
Davo Smith 280f513434 MDL-36538 repository_webdav - save files directly to local filesystem, rather than buffering in memory
Conflicts:
	repository/webdav/lib.php
2012-12-07 09:30:53 +00:00
Adrian Greeve 6ebf0d9c1e MDL-37026 - lib: The function user_can_assign() returns true for admins. 2012-12-06 11:09:39 +08:00
Jason Fowler fec9977741 MDL-35979 - Commenting - Adding an empty alt attribute to the javascript generated delete icon for comments 2012-12-05 10:04:34 +08:00
Jason Fowler 589591b8c7 MDL-36110 - Blocks - Community finder icon alt attribute is now empty 2012-12-04 15:18:47 +08:00
Jerome Mouneyrac a8c99982fb MDL-29805 add REQUIRE_CORRECT_ACCESS define + return error code when AJAX_SCRIPT fails 2012-12-04 13:43:02 +08:00
Jerome Mouneyrac 9c931ad074 MDL-35593 core_webservice_get_site_info returns version number set to PARAM_TEXT and PARAM_FLOAT 2012-12-03 10:24:41 +08:00
Sam Hemelryk 0ae2507ea7 MDL-33448 enrol_manual: Reduced JS get_string calls for the yui widget 2012-12-03 09:28:11 +13:00
Sam Hemelryk 44e094d1ec MDL-33448 enrol_manual: Reordered things to improve JS performance when enrolling users
Conflicts:

	enrol/manual/yui/quickenrolment/quickenrolment.js
2012-12-03 09:28:11 +13:00
AMOS bot b98bc17196 Automatically generated installer lang files 2012-12-01 00:43:09 +00:00
Tim Hunt e625e18bfc MDL-36954 question bank: stop centring question name.
This was a regression caused by MDL-21625. These CSS changes
put the display back to how it was, while leaving the table
cell as a TD  for accessibility.
2012-11-30 16:33:56 +00:00
Tim Hunt b85c0bee53 MDL-36942 xml question import: don't add spaces.
They are not necessary anyway, there is a \n character at the end of
each line.

Thanks to Richard Lobb for fining the problem and how to fix it.
2012-11-30 14:57:34 +00:00
Tim Hunt 7192907607 MDL-36897 quiz: redirect teachers from summary to review page.
There is already logic like this at the top of attempt.php. If the
teacher arrives at one of these pages for a student's attempt, for
example by clicking a link in the logs, then they should be redirected
to the review page to see the students attempt in its current state.
2012-11-30 14:57:19 +00:00
Tim Hunt f196602737 MDL-36845 excel export: don't output invalid sheet names.
We should clean any proposed worksheet name, to remove the characters
that Excel does not allow.
2012-11-30 14:57:03 +00:00
Tim Hunt 895e1baad6 MDL-36742 question bank: get rid of flicker during page load.
Thanks to Frédéric Massart for working out the fix to this.
2012-11-30 14:56:47 +00:00
Tim Hunt ad65910119 MDL-36732 Cloze qtype: review marks should not depend on feedback.
The various review options should be independent.
2012-11-30 14:56:27 +00:00
Tim Hunt dfa6ca9813 MDL-36650 don't change question timecreated or timemodified on restore. 2012-11-30 14:56:10 +00:00
Tim Hunt 30ebefd416 MDL-35404 question export: make it work with slasharguments off.
Thanks to Brian King for working out the problem and how to fix it. I am
just committing his patch.
2012-11-30 14:55:52 +00:00
Eloy Lafuente (stronk7) 15b3a4398a weekly release 2.2.6+ 2012-11-30 13:25:53 +01:00
Jerome Mouneyrac 3fd3efac7b MDL-30961 get_course_contents: returned activity name should not be check against PARAM_TEXT, it could be anything 2012-11-30 14:25:48 +08:00
Dan Poltawski 0e19f8ed3b MDL-36778 course - prevent undefined index warnings
When logged in as a guest the mform didn't set userid.
2012-11-30 12:29:17 +08:00
Andrew Davis 26bc714f1f MDL-36761 core_grade:shifted a call to count() out of a loop 2012-11-30 11:10:07 +08:00
Jerome Mouneyrac ab1623b87b MDL-36773 timezone inconsistency => some number support decimal other don\'t - Original patch author: Nathan Mares 2012-11-30 10:14:39 +08:00
Adrian Greeve 96004c8bbc MDL-36915 - mod/data: A database with no entries no longer displays the export to portfolio button. 2012-11-30 10:13:02 +08:00
Dan Poltawski 20f39d0f98 Revert "MDL-36838 moodle->mahara mnet SSO failure in FF17"
Firefox have now decided to reverse their UA change (since integration)
and this patch has some minor drawbacks.

This reverts commit b5a0e3befb.
2012-11-30 09:25:37 +08:00
Kevin Wiliarty ce98dd3191 MDL-35221 mod_feedback: replace checkbox with advcheckbox for all requirable feedback question types 2012-11-29 12:39:46 -05:00
Andrew Robert Nicols acfcf342d5 MDL-36601 Ensure that reports remember all days setting
All Days was set as the nothing value, but this nothing value was used.
Additionally, an insufficient comparison meant that the selecteddate then
became Today.
2012-11-29 09:58:22 +00:00
Adrian Greeve 8e223e56cb MDL-36906 - mod_data: Latitude and Logitude error fix.
Thanks to Marcus Boon for providing a patch for this issue.

mod/data/field/latlong/kml.php was missing a context variable.
This was causing an error when trying to download a kml file for
google earth. This variable has now been included.
2012-11-29 14:48:50 +08:00
Dan Marsden 425475981c MDL-36858 SCORM: improve lang help for attempts grading to warn about failed status. 2012-11-29 12:54:00 +08:00
Dan Poltawski c993fe8d88 Merge branch 'MDL-36838-FF17-MNETSSO-22' of git://github.com/peterbulmer/moodle into MOODLE_22_STABLE 2012-11-28 17:36:20 +08:00
Sam Hemelryk e6ee93d1a3 Merge branch 'MDL-36336_MOODLE_22_STABLE' of git://github.com/moodlerooms/moodle into MOODLE_22_STABLE 2012-11-28 11:47:41 +13:00
Sam Hemelryk 479f5b6e6d Merge branch 'wip-mdl-36238-m22' of git://github.com/rajeshtaneja/moodle into MOODLE_22_STABLE 2012-11-28 11:40:30 +13:00
Aparup Banerjee fbef42576b Merge branch 'MDL-36841_m22' of git://github.com/markn86/moodle into MOODLE_22_STABLE 2012-11-27 14:57:31 +08:00
David Monllao a84f961376 MDL-30899 moodle-enrol-notification Adding H1 to notifications headers 2012-11-27 14:49:50 +08:00
David Monllao 8b857b293d MDL-30899 block_community Changing from overlay to panel references 2012-11-27 14:49:50 +08:00
David Monllao 49ea1f622b MDL-30899 moodle-enrol-notification Replacing Y.Overlay for Y.Panel
References to lightbox are still there to maintain the same
external API but are converted to a modal attribute internally,
same with closeButton, not it uses the Y.Panel close button
2012-11-27 14:49:50 +08:00
Dan Poltawski 19fad758a1 Merge branch 'MDL-34695_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-11-27 14:23:52 +08:00
Mark Nelson e3ad8a5d2c MDL-36841 portfolio: ensure variables in parent function match those of childs to prevent strict standard error 2012-11-27 14:14:04 +08:00
Dan Poltawski 6a992d7d86 Merge branch 'MDL-36302-22' of git://github.com/damyon/moodle into MOODLE_22_STABLE 2012-11-27 14:10:14 +08:00
Damyon Wiese efc8baaaa2 MDL-36302 course: Set correct URL on settings page for navigation. 2012-11-27 14:05:12 +08:00
Dan Poltawski 24d215d340 Merge branch 'MDL-36806_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-11-27 13:26:54 +08:00
Aparup Banerjee fee4404aba Merge branch 'wip-mdl-36767-m22' of git://github.com/rajeshtaneja/moodle into MOODLE_22_STABLE 2012-11-27 12:20:39 +08:00
Rajesh Taneja 152ae1ffdd MDL-36767 Administration: user_filter_yesno use different name for sql filter
user_filter_yesno extends user_filter_simpleselect, so if user bulk action filter has both
user_filter_simpleselect and user_filter_yesno, they use the same filter name but counter is
different as they are different classes. Hence using different filter name will avoid confilts
2012-11-27 11:59:58 +08:00
Aparup Banerjee 385cddf634 Merge branch 'MDL-36305-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-11-27 11:53:20 +08:00
Peter Bulmer b5a0e3befb MDL-36838 moodle->mahara mnet SSO failure in FF17
In MDL-36838 Firefox 17 users are unable to sso from moodle to mahara.

Firefox 17 uses a different user agent (UA) string for Moodle sites than it
does for Mahara or other sites.
This patch relaxes the check which previously required that the UA string
being presented to the SP on landing matched the UA string presented to the IP
when jumping.
Likewise, checks associated with logout calls have been relaxed
2012-11-27 16:20:17 +13:00
Sam Hemelryk 8725c4401b Merge branch 'wip-MDL-36795-MOODLE_22_STABLE' of git://github.com/abgreeve/moodle into MOODLE_22_STABLE 2012-11-27 11:21:46 +13:00
Sam Hemelryk d6347b056d Merge branch 'MDL-36760_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-11-27 10:40:20 +13:00
Paul Nicholls 8c27cc9534 MDL-27619: Prevent teachers from turning course Outcomes into site-wide ones
Similar to the issue which allowed teachers to create site-wide scales by editing a course-specific scale (MDL-24682), teachers could also promote a course-specific scale to a site-wide (standard) by editing it.  As with MDL-24682, removing the course ID check (leaving just the capability check) prevents this unauthorised creation of site-wide (standard) outcomes.
2012-11-27 10:08:15 +13:00
Adrian Greeve 0ceb918703 MDL-36795 - lib / administration: maxsections now limits the default setting for numsections.
In the default course settings, setting the maximum number topics / weeks  to 0 would not
change the default number of sections on the same page as any other number would.
A more appropriate check has been put in place.

This also incorporates a fix for MDL-28584. The course edit screen now also checks to see
if maxsections is set or numeric. If it is not set or numeric then it defaults to 52.
2012-11-26 16:01:27 +08:00
Adam Olley 5227c9c305 MDL-33125: core_backup: Prevent import/activity duplication from duplicating manual grade items 2012-11-26 12:28:26 +10:30
Sam Hemelryk f3fc480228 Merge branch 'MDL-36609_m22' of git://github.com/markn86/moodle into MOODLE_22_STABLE 2012-11-26 14:57:31 +13:00
Sam Hemelryk 066fc70ece Merge branch 'wip-MDL-36551-MOODLE_22_STABLE' of git://github.com/abgreeve/moodle into MOODLE_22_STABLE 2012-11-26 14:44:09 +13:00
Tim Hunt 8ee045c026 MDL-36806 question files: fix unnecessary require_login call.
quiz_question_pluginfile later does the correct check. Doing this
other check first means you get an error about changing $PAGE->context.
2012-11-23 15:56:36 +00:00
Tim Hunt 35314e2f91 MDL-36760 formslib: fix frozen elements with [] in name.
This was a regression caused by MDL-30845 or, to be precise, the related
issue MDL-32785.

Form elements with names like multipier[0] require special handling,
such as is present in HTML_QuickForm_element::_prepareValue. I have
added equivalent handling to MoodleQuickForm::exportValues. I am afraid
that I could not think of a way to do this reliably without duplicating
code.
2012-11-23 11:32:04 +00:00
Mark Nelson 6f2e7ccb54 MDL-36741 mod_forum: fixed SQL that was generated when either timed posts or groups were enabled 2012-11-23 17:03:52 +08:00
Dan Poltawski e4592b226d weekly release 2.2.6+ 2012-11-23 15:19:04 +08:00
Dan Poltawski e5b945e956 Merge branch 'install_22_STABLE' of git://git.moodle.cz/moodle-install into MOODLE_22_STABLE 2012-11-23 15:15:39 +08:00
Dan Poltawski 79d7cda9e5 Merge branch 'MDL-36204-files-with-spaces_22' of git://github.com/mudrd8mz/moodle into MOODLE_22_STABLE 2012-11-23 11:20:27 +08:00
David Mudrák e1c5528fff MDL-36204 Improve moodle1 conversion of embedded files
URL of files referenced in HTML fields via $@FILEPHP$@ are usually
encoded if they were linked using the HTML editor. So if they contain
spaces or plus signs in the name, their URL is encoded to use %20 and
%2B respectively.

Sometimes, for example when the HTML was edited manually in 1.9 without
the editor, non-encoded file names may be put into the HTML text. Such a
link used to work in 1.9 so we add an explicit support for it, too.

However, we do not support partially encoded URLs (e.g. only spaces are
encoded while plus signs are not). Such links are unmodified and will
rely on Legacy files support.
2012-11-23 04:01:15 +01:00
AMOS bot b640d7ea28 Automatically generated installer lang files 2012-11-22 09:05:26 +00:00
Dan Poltawski bf0aa894bd Merge branch 'wip-MDL-36668-MOODLE_22_STABLE' of git://github.com/abgreeve/moodle into MOODLE_22_STABLE 2012-11-22 10:33:47 +08:00
Dan Poltawski d59c0d7094 Merge branch 'MDL-30884_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-11-21 15:19:32 +08:00
Dan Poltawski edd08683b9 Merge branch 'MDL-35675-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-11-21 12:03:13 +08:00
Dan Poltawski f890a6a9f9 Merge branch 'MDL-30377_m22' of git://github.com/markn86/moodle into MOODLE_22_STABLE 2012-11-21 11:53:36 +08:00
Dan Poltawski 2c9280ffa6 Merge branch 'MDL-36170_m22' of https://github.com/jfilip/moodle into MOODLE_22_STABLE 2012-11-21 11:47:47 +08:00
Adrian Greeve f0a7956c1b MDL-36551 - mod_data: Onsite presets now retain the advanced search template.
Presets that were saved to the site would lose the advanced search template when being used.
The previous check was put in place to see if the advanced search template existed or not (presets pre 1.9),
This checked external files properly but not onsite files.

Now checks are being done on both internal and external preset files.
2012-11-21 10:05:50 +08:00
Justin Filip eafdf083a9 MDL-36170 - mod/data - Don't display the blocks editing button within table HTML, use a standard API to create it. 2012-11-20 09:09:14 -05:00
Tim Hunt 9de4152eff MDL-30884 quiz: ARIA attribute for the coutdown timer. 2012-11-20 12:14:26 +00:00
Dan Poltawski 01d8f54dbd Merge branch 'MDL-33863_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-11-20 16:16:54 +08:00
Dan Poltawski 81c8cccf6c Merge branch 'MDL-30731-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-11-20 15:31:46 +08:00
Dan Poltawski 6330424fae Merge branch 'MDL-36571_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-11-20 15:01:46 +08:00
Frederic Massart 3135254d8f MDL-30731 calendar: Fixed display of images in event descriptions 2012-11-20 14:59:04 +08:00
Dan Poltawski f7f7cf7760 Merge branch 'wip-MDL-36453-MOODLE_22_STABLE' of git://github.com/abgreeve/moodle into MOODLE_22_STABLE 2012-11-20 14:32:14 +08:00
Frederic Massart 37881d2f20 MDL-36305 theme: Forum reply button is not removed using MyMobile 2012-11-20 13:57:16 +08:00
Dan Poltawski 521225275b Merge branch 'MDL-36204_22' of git://github.com/pauln/moodle into MOODLE_22_STABLE 2012-11-20 12:45:58 +08:00
Dan Poltawski 80b7e5deb6 Merge branch 'MDL-32865_22' of git://github.com/jmvedrine/moodle into MOODLE_22_STABLE 2012-11-20 12:05:55 +08:00
Dan Poltawski 774530f8b4 Merge branch 'MDL-30871-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-11-20 11:47:36 +08:00
Dan Poltawski f2b9840585 Merge branch 'MDL-26439_message_search_22' of git://github.com/andyjdavis/moodle into MOODLE_22_STABLE 2012-11-20 11:21:00 +08:00
Eloy Lafuente (stronk7) a9d6e98211 Merge branch 'MDL-36683_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-11-20 01:34:01 +01:00
Jean-Michel Vedrine 2773783da2 MDL-33863 question restore: better hint identification.
This is very similar to what MDL-30018 did for question_answers.
2012-11-19 23:29:32 +00:00
Tim Hunt 3fec0aa045 MDL-36683 qtype match restore: better subq indentification.
This is very similar to what MDL-30018 did for question_answers.
2012-11-19 23:10:09 +00:00
Tim Hunt 0f36ae6350 MDL-36571 qtype multichoice: don't corrupt unicode characters.
It seems that \s includes non-breaking space, and the typical one-byte
representation of that is the same as some parts of multibyte unicode
characters. Therefore, you need to include the u modifer on the regular
expressions.

Also, remove any number of <br /> at the end of the answer.

Thanks to Joseph Rézeau and Jean-Michel Vedrine for working out what the
problem was, and how to fix it.
2012-11-19 18:22:03 +00:00
Mark Nelson 82695f7730 MDL-36609 javascript: ensure HTML element exists before attempting to perform JS functionality 2012-11-19 15:42:52 +08:00
Adrian Greeve 6c31598afe MDL-36668 - mod/data: Removed duplicate data_content join in simple searches.
Thanks to Patrick Pollet (patrick.pollet@insa-lyon.fr) for his patch
2012-11-19 10:11:41 +08:00
Sam Hemelryk b7696aa0b6 Merge branch 'MDL-36589_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-11-19 14:55:13 +13:00
Jean-Michel Vedrine 1d5c83082f MDL-32865 CLOZE Questions imported from another course end up with broken image links 2012-11-17 16:54:42 +01:00
Andrew Robert Nicols ce18cd39e6 MDL-36640 Logging: Correct testing of log->info.
log->info sometimes contains additional information which can be looked up
from other tables. This should only be attempted if the field is numeric,
but the CSV, XLS, and ODS outputs were not making this check.

There is an additional case for the print_mnet_log function which has not
been covered - this is because the mnet logging is currently broken beyond
the scope of this bug rendering this section untestable. These issues are
raised in MDL-36642.
2012-11-16 11:19:27 +00:00
Dan Poltawski b969895cb6 weekly release 2.2.6+ 2012-11-16 15:37:07 +08:00
Dan Poltawski f2bd07e54d Merge branch 'install_22_STABLE' of git://git.moodle.cz/moodle-install into MOODLE_22_STABLE 2012-11-16 15:33:29 +08:00
Frederic Massart 265033d8e0 MDL-26660 libraries: Improved XML validation before parsing
Conflicts:

	lib/googleapi.php
2012-11-16 12:14:28 +08:00
Dan Poltawski 7aaece91a3 Merge branch 'MDL-36331_redirect_22' of git://github.com/andyjdavis/moodle into MOODLE_22_STABLE 2012-11-15 14:41:07 +08:00
Andrew Davis 6b17edba39 MDL-36331 core_grade: fixed up 2 incorrect default return URLs 2012-11-15 10:48:58 +08:00
Adrian Greeve d12b949a2c MDL-36453 - mod_data: Presets now load in a Windows environment.
Thanks to Michael de Raadt for this patch.
2012-11-15 08:58:11 +08:00
Paul Nicholls 2b046f832b MDL-36204: moodle1 backup converter: add unit test to cover this issue 2012-11-15 11:41:27 +13:00
Paul Nicholls ba42721ca4 MDL-36204: moodle1 backup converter: urldecode filenames from links
If filenames are not run through urldecode(), those that contain spaces (or other url-encoded characters) will not be handled, as they can't be found in the backup file.
2012-11-15 11:27:06 +13:00
Mark Nielsen c9faf6e3b5 MDL-36336: Prevent duplicate grade items on restore
During restore, lti_add_instance() was being called
and this could generate a grade item.  This would
produce a duplicate item because the restore
process would automatically generate the grade item.
2012-11-14 09:36:57 -08:00
Mark Nelson edbada7c4f MDL-30377 forum: do not allow users to view not yet started or expired discussions 2012-11-14 21:00:02 +08:00
Rossiani Wijaya 1cf1a1737c MDL-36589 Lesson Module: set correct answer_jump to next page in question import. 2012-11-14 16:19:22 +08:00
Petr Škoda bf3bd818bf MDL-36283 use accesscontext when assigning cohort members 2012-11-14 11:26:34 +08:00
Dan Poltawski ecf1f30591 Merge branch 'MDL-35358_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-11-14 11:17:58 +08:00
Dan Poltawski aab4251842 Merge branch 'MDL-26660-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-11-14 10:34:03 +08:00
Dan Poltawski e015e5da34 Merge branch 'MDL-34520-m22' of git://github.com/ankitagarwal/moodle into MOODLE_22_STABLE 2012-11-14 09:56:23 +08:00
Amy Groshek ad50eae794 MDL-36540 - Survey language pack typo 2012-11-14 09:46:00 +08:00
Aparup Banerjee 11fa569bd8 MDL-24736 anotating tinymce changes to readme 2012-11-14 09:41:51 +08:00
Dan Poltawski 6b158f58b6 Merge branch 'wip-MDL-36413-MOODLE_22_STABLE' of https://github.com/nicolasconnault/moodle into MOODLE_22_STABLE 2012-11-14 09:18:43 +08:00
Aparup Banerjee e4cdd9f2cb Merge branch 'wip_22_mdl-25736_tinymce_spellchecker_frech_issues' of https://github.com/iarenaza/moodle into MOODLE_22_STABLE 2012-11-14 09:14:02 +08:00
Petr Škoda 21f869131d MDL-36169 fix enrolled users sorting by alphanumerical column
Credit goes to Nicholas Koeppen, thanks!
2012-11-13 13:40:43 +08:00
David Mudrák da255ad81a MDL-35422 Fix the confusing submit button label 2012-11-12 10:36:50 +08:00
Iñaki Arenaza 38e02370de MDL-25736 TinyMce Spellchecker French issues
GoogleSpell checker already returns data un UTF8, so there's no need
to use utf8_encode (in fact, using it completely mangles the string).

All credit goes to David Quintal for finding the issue and proposing
the fix.
2012-11-10 20:13:21 +01:00
AMOS bot d66083c260 Automatically generated installer lang files 2012-11-10 00:36:26 +00:00
Eloy Lafuente (stronk7) 2b3dbc7ee9 Moodle release 2.2.6 2012-11-09 19:34:54 +01:00
Eloy Lafuente (stronk7) 23a6a67140 MDL-25948 upgrade: Avoid overlaping with weeklies 2012-11-09 19:02:06 +01:00
Eloy Lafuente (stronk7) 30b9d52d78 Merge branch 'MDL-25948_m22' of git://github.com/markn86/moodle into MOODLE_22_STABLE 2012-11-09 19:01:04 +01:00
Mark Nelson 08f68a7d2f MDL-25948 upgrade: Check that field does not match defaults before editing. 2012-11-09 19:01:13 +08:00
Dan Poltawski 53cd3c286e weekly release 2.2.5+ 2012-11-09 17:59:17 +08:00
Dan Poltawski ab8c8a8f92 Merge branch 'install_22_STABLE' of git://git.moodle.cz/moodle-install into MOODLE_22_STABLE 2012-11-09 17:54:19 +08:00
Mark Nelson d1bed0abc3 MDL-25948 upgrade: Fixing issues with upgrade from < 1.7 to 2.x. 2012-11-09 15:06:29 +08:00
AMOS bot 1b82a6fb65 Automatically generated installer lang files 2012-11-09 00:39:00 +00:00
Dan Poltawski 235ec73c0f Merge branch 'MDL-35349_m22' of git://github.com/markn86/moodle into MOODLE_22_STABLE 2012-11-08 18:55:20 +08:00
Aparup Banerjee c978929e36 Merge branch 'MDL-27824_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-11-08 13:32:45 +08:00
Rossiani Wijaya bf99ef166f MDL-27824 course categories: remove trailing whitespace 2012-11-08 12:33:20 +08:00
Rossiani Wijaya 992d263ac5 MDL-27824 course categories: change isset() to empty() 2012-11-08 12:32:56 +08:00
Rossiani Wijaya 03d17744ea MDL-27824 course categories: Added @todo comments to remove the temporary fix 2012-11-08 12:32:55 +08:00
Rossiani Wijaya d86ad06b6e MDL-27824 - course category: add check test for ->coursesperpage value. 2012-11-08 12:32:55 +08:00
Dan Poltawski 62c2b3d818 Merge branch 'MDL-36422-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-11-08 11:08:17 +08:00
Frederic Massart 341ad08669 MDL-36422 question: Fixed malformed HTML in manual marking 2012-11-08 10:26:23 +08:00
Mark Nelson 1be0790e01 MDL-33791 Portfolio: Fixed security issue with passing file paths. 2012-11-08 00:27:57 +01:00
Mary Evans c4669ce618 MDL-36197 theme_fusion: Fix for "Your progress" overlaps completion tracking checkbox 2012-11-08 11:33:53 +13:00
Sam Hemelryk e3071745bb Merge branch 'MDL-36271_m22' of https://github.com/markn86/moodle into MOODLE_22_STABLE 2012-11-08 11:06:41 +13:00
Adrian Greeve 78602c3fab MDL-35558 mod_data: Show only own entries while there are required pending. 2012-11-07 19:55:08 +01:00
Nicolas Connault 3d9b36e015 MDL-36413 Added "this->" to exclude variable assignment
The this-> keyword was missing from the $exclude = array() statement.
2012-11-07 14:52:43 +08:00
Dan Poltawski 025ca6f7d3 Merge branch 'MDL-36346_22' of git://github.com/pauln/moodle into MOODLE_22_STABLE 2012-11-07 09:28:02 +08:00
Paul Nicholls 5b8bfd14a8 MDL-36346 - YUI2 SWF vulnerability, part 2 2012-11-07 13:55:11 +13:00
AMOS bot b3ddb0951f Automatically generated installer lang files 2012-11-07 00:36:32 +00:00
Andrew Davis 47ae6d3fc9 MDL-35762 core_grade: altered the code that determines whether an activity is visible on the user report 2012-11-06 16:50:08 +01:00
Dan Poltawski d46929e4e3 Merge branch 'MDL-36346_22' of git://github.com/pauln/moodle into MOODLE_22_STABLE 2012-11-06 16:21:18 +08:00
Dan Poltawski 70a5dda65a Merge branch 'wip-MDL-36379-m22' of git://github.com/samhemelryk/moodle into MOODLE_22_STABLE 2012-11-06 09:50:30 +08:00
Paul Nicholls cbfb767fb5 MDL-36346 - YUI2 SWF vulnerability 2012-11-06 14:43:51 +13:00
Sam Hemelryk d16d4761d4 MDL-36379 user_view: fixed issue with page layout when editing was on 2012-11-06 14:01:41 +13:00
Sam Hemelryk 3e8532dadc Merge branch 'MDL-31629-MOODLE_22_STABLE' of git://github.com/micaherne/moodle into MOODLE_22_STABLE 2012-11-06 10:08:22 +13:00
Frederic Massart d128e2844b MDL-35675 forms: Remove constrain to viewport for popup calendar 2012-11-05 16:42:54 +08:00
Didier Raboud bad69d25cc MDL-35675 forms: Popup calendar is not constrained any more 2012-11-05 16:42:54 +08:00
Dan Poltawski 9cbc51937a Merge branch 'wip-mdl-35766-m22' of git://github.com/rajeshtaneja/moodle into MOODLE_22_STABLE 2012-11-05 15:11:46 +08:00
Dan Poltawski 5a83ba350d MDL-34527 - fix trailing whitespace 2012-11-05 13:26:44 +08:00
Dan Poltawski 3339623dc0 Merge branch 'wip-MDL-34527-m22' of git://github.com/samhemelryk/moodle into MOODLE_22_STABLE 2012-11-05 13:25:26 +08:00
Sam Hemelryk bfea3bf351 MDL-21625 question: Fixed phpdocs 2012-11-05 16:29:42 +13:00
Sam Hemelryk fdd57e090e Merge branch 'MDL-21625_b_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-11-05 16:27:15 +13:00
Dan Poltawski e262ca4250 Merge branch 'MDL-33621_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-11-05 11:12:49 +08:00
Matt Petro 4befe7f551 MDL-36025 qtype calculated: Fix handling of "-0" 2012-11-02 12:10:28 -04:00
Mark Nelson 853d6d008f MDL-35349 paypal: Fixing return page so that it now declares page context 2012-11-02 15:32:36 +08:00
Ankit Agarwal 248eecdf15 MDL-34520 gradebook: Missing droplow setting in gradebook backup 2012-11-02 14:24:33 +08:00
Dan Poltawski 3fd59e3674 Merge branch 'w42_MDL-35469_m22_geckover' of git://github.com/skodak/moodle into MOODLE_22_STABLE 2012-11-02 12:07:21 +08:00
Sam Hemelryk 1367a13c88 MDL-34527 forum: Fixed up a couple of SQL queries causing issues in Oracle. 2012-11-02 10:49:39 +13:00
Huy Hoang a8f5d3814d MDL-34695 Wiki Module: add prevention to create new record when userid is 0 2012-11-01 17:47:19 +08:00
Mark Nelson a9e4129829 MDL-36271 feedback: Fixed variable typo 2012-11-01 15:47:06 +08:00
Dan Poltawski f47b2e4a24 weekly release 2.2.5+ 2012-11-01 14:17:07 +08:00
Dan Poltawski e8a8691a10 Merge branch 'install_22_STABLE' of git://git.moodle.cz/moodle-install into MOODLE_22_STABLE 2012-11-01 14:14:27 +08:00
Jonathon Fowler f2ce3d0239 MDL-34695 wiki: ensure the correct individual subwiki is used/created for a user 2012-11-01 12:27:56 +08:00
Rajesh Taneja d5b5becc18 MDL-36238 Blocks: Logs page close session write, so editing is set before 2012-11-01 12:18:43 +08:00
Andrew Davis e451aa73d2 MDL-36162 core_message: removed the unnecessary and confusing course URL parameter as well as fixing the broken breadcrumb 2012-11-01 09:44:59 +08:00
Andrew Davis ee73e0f489 MDL-26439 core_message: switched the message search over to displaying smallmessage instead of fullmessage which contains boilerplate we dont want 2012-11-01 08:52:48 +08:00
AMOS bot f9442b3eba Automatically generated installer lang files 2012-11-01 00:36:40 +00:00
Dan Poltawski 02017cb9f3 Merge branch 'MDL-28235-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-10-31 13:42:31 +08:00
Frederic Massart 306b782436 MDL-28235 form: Removed reference to unexisting close button in help popup 2012-10-31 13:00:56 +08:00
Frederic Massart 4f7ec41692 MDL-28235 form: Removed close icon of help icon popups 2012-10-31 13:00:51 +08:00
Frederic Massart 4274f4d003 MDL-28235 form: Help button popup close accessibility improved
AMOS BEGIN
 CPY [close,editor],[close,form]
AMOS END
2012-10-31 13:00:51 +08:00
Dan Poltawski 18da8c03e0 Merge branch 'MDL-32712-22' of https://github.com/mackensen/moodle into MOODLE_22_STABLE 2012-10-31 11:59:34 +08:00
Dan Poltawski 9787d3a9b5 Merge branch 'wip-mdl-29762-m22' of git://github.com/rajeshtaneja/moodle into MOODLE_22_STABLE 2012-10-31 10:51:03 +08:00
Aparup Banerjee a70978a2bd Merge branch 'MDL-31708-moodle22' of git://github.com/StudiUM/moodle into MOODLE_22_STABLE 2012-10-31 10:05:47 +08:00
Sam Hemelryk 61f0581a02 Merge branch 'MDL-31934_M22' of git://github.com/lazydaisy/moodle into MOODLE_22_STABLE 2012-10-31 10:15:18 +13:00
Mary Evans 4f6f0026e0 MDL-31934 mod/forum: Added CSS fix to mod/forum/styles.css for unread forumposts also reversed a previous commit in theme/base/core.css. 2012-10-30 11:48:49 +00:00
Dan Poltawski 279fe97bd2 Merge branch 'wip-MDL-32326-m22' of git://github.com/samhemelryk/moodle into MOODLE_22_STABLE 2012-10-30 13:40:44 +08:00
Sam Hemelryk e16c434140 Merge branch 'MDL-28235-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-10-30 17:36:33 +13:00
Dan Poltawski 4c8582b8c0 Merge branch 'wip-mdl-35489-m22' of git://github.com/rajeshtaneja/moodle into MOODLE_22_STABLE 2012-10-30 12:12:01 +08:00
Michael de Raadt 1cd1eb53e5 MDL-35358 Lesson Module: fixed teacher grade essays display when lesson is only available for group members only 2012-10-30 11:39:50 +08:00
Frederic Massart ceefaa8f3e MDL-30871 enrol: Flat file does not fail when notifications are enabled 2012-10-30 11:03:37 +08:00
Sam Hemelryk b277186a4e Merge branch 'MDL-35889-m22' of git://github.com/ankitagarwal/moodle into MOODLE_22_STABLE 2012-10-30 15:48:45 +13:00
Dan Poltawski d258956c4a Merge branch 'wip-mdl-35910-m22' of git://github.com/rajeshtaneja/moodle into MOODLE_22_STABLE 2012-10-30 10:00:31 +08:00
Frederic Massart c4bc6e9022 MDL-26660 libraries: Do not try to parse non-valid XML
Conflicts:

	lib/googleapi.php
2012-10-30 09:28:18 +08:00
Andrew Davis 8d6e613d1f MDL-29733 grade: SQL and comment cleanup 2012-10-30 09:02:47 +08:00
Jonathan Champ d557253610 MDL-29733 grade: Query for Identifying Grade Grades to Precreate is SLOW 2012-10-30 09:02:15 +08:00
Andrew Robert Nicols a6e0e0bf9a MDL-35959 Correct footer for M.core.dialogue 2012-10-30 13:33:59 +13:00
Nadav Kavalerchik a04cf7d76e MDL-36070 - Points label hides UP and Down ordering arrows and Delete Icon on Quiz edit page, in RTL mode (theme/standard) 2012-10-30 13:03:29 +13:00
Sam Hemelryk 0be66059a2 Merge branch 'MDL-36076_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-10-30 12:59:02 +13:00
Michael Aherne 6dc38156a2 MDL-36101 auth_shibboleth Show appropriate error message for suspended accounts 2012-10-30 12:55:30 +13:00
Sam Hemelryk 15b3f43326 Merge branch 'MDL-36103_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-10-30 12:51:34 +13:00
Charles Fulton 5559703a23 MDL-36105 grades: use consistent icon classs 2012-10-30 12:34:58 +13:00
Mary Evans 51e28ed8d7 MDL-36137 theme_magazine: changed forum and description info from center to left aligned. 2012-10-30 12:18:07 +13:00
Rossiani Wijaya faba398d17 MDL-35530 Lesson Module: Add question text to facilitate grading 2012-10-29 17:05:04 +08:00
Dan Poltawski f767e4b066 Merge branch 'm22_MDL-35215' of git://github.com/totara/moodle into MOODLE_22_STABLE 2012-10-29 15:34:03 +08:00
Dan Poltawski 864a95aab3 Merge branch 'MDL-35880-m22' of git://github.com/ankitagarwal/moodle into MOODLE_22_STABLE 2012-10-29 14:35:35 +08:00
Dan Poltawski 2407b73f18 Merge branch 'MDL-34837-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-10-29 13:55:25 +08:00
AMOS bot c8be58152e Automatically generated installer lang files 2012-10-27 00:34:38 +00:00
Mary Evans 17a826bf54 MDL-31934 theme_base: Fix to add highlight color to unread forum posts. 2012-10-21 01:57:02 +01:00
Eloy Lafuente (stronk7) 67ba0081ba weekly release 2.2.5+ (fix!) 2012-10-19 20:01:56 +08:00
Tim Hunt a9c7672efa MDL-36103 tablelib: links to user profiles are wrong in courses. 2012-10-19 16:51:04 +08:00
Rajesh Taneja f415f6f84b MDL-35910 Assignment 2.2: Fixed included files in assignment zip.
If Marking button is enabled, assignment is open and is not finalized, then don't add file to zip
2012-10-19 16:10:43 +08:00
Rossiani Wijaya 91b1c5c22e MDL-21625 Question bank: fixing whitespace 2012-10-19 15:43:48 +08:00
Rajesh Taneja b53ec9de13 MDL-35766 AJAX: Conditional activity hiding is separately handled by JS 2012-10-19 13:43:47 +08:00
Rossiani Wijaya 8c89ce5f65 MDL-21625 Question bank: Add accessibility to table layout for viewing question list 2012-10-19 13:42:04 +08:00
Gilles-Philippe Leblanc d0d121acb7 MDL-31708 wiki: Wiki 2.0 non-group member can see edit option in navigation block 2012-10-18 08:34:09 -04:00
Aparup Banerjee 10c3c372b9 weekly release 2.2.6+ 2012-10-18 19:45:10 +08:00
Aparup Banerjee b06c8fdd9c Merge branch 'install_22_STABLE' of git://git.moodle.cz/moodle-install into MOODLE_22_STABLE 2012-10-18 19:21:53 +08:00
Rajesh Taneja 62e1fab324 MDL-35489 users: Check added before using form data 2012-10-18 17:28:29 +08:00
David Tang 8c26d6db93 MDL-31629 auth_shibboleth Use correct language string location 2012-10-18 08:59:40 +01:00
AMOS bot 4a1cf2aa17 Automatically generated installer lang files 2012-10-18 00:34:57 +00:00
Tim Hunt 91a307c918 MDL-36076 qtype multichoice: validation fails on '0' answer. 2012-10-17 13:55:54 +08:00
Aparup Banerjee 656216af37 Merge branch 'MDL-28965-m22' of git://github.com/ankitagarwal/moodle into MOODLE_22_STABLE 2012-10-17 10:40:22 +08:00
AMOS bot 9151d6994a Automatically generated installer lang files 2012-10-17 00:34:40 +00:00
Sam Hemelryk d3eb32a44e Merge branch 'MDL-35412-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-10-16 17:41:19 +08:00
Dan Poltawski 00f581ca28 Merge branch 'wip-mdl-30691-m22' of git://github.com/rajeshtaneja/moodle into MOODLE_22_STABLE 2012-10-16 16:27:59 +08:00
Dan Poltawski a407d10f1e Merge branch 'wip-mdl-27309-m22' of git://github.com/rajeshtaneja/moodle into MOODLE_22_STABLE 2012-10-16 14:59:23 +08:00
Dan Poltawski d44a43190a Merge branch 'wip-mdl-32218-m22' of git://github.com/rajeshtaneja/moodle into MOODLE_22_STABLE 2012-10-16 14:35:45 +08:00
Ankit Agarwal 01fc1376f5 MDL-35880 user: Adding a heading to profile edit page 2012-10-16 14:18:28 +08:00
Rajesh Taneja c36c0ccc1e MDL-29762 Blocks: Modified checks to show image in html block
Conflicts:

	blocks/html/lib.php
2012-10-16 11:42:23 +08:00
Sam Hemelryk d270f6c22d Merge branch 'MDL-35198-MOODLE_22_STABLE' of git://github.com/mouneyrac/moodle into MOODLE_22_STABLE 2012-10-16 11:22:44 +08:00
Dan Poltawski cecd632a8a Merge branch 'MDL-33815_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-10-16 11:09:14 +08:00
Dan Poltawski 991eb4f6d0 Merge branch 'wip-MDL-32184-s22' of http://github.com/phalacee/moodle into MOODLE_22_STABLE 2012-10-16 10:46:58 +08:00
Dan Poltawski 83c45d6304 MDL-21801 - mod_lesson: version bump
To reflect the new (ppt-less) state
2012-10-16 10:30:21 +08:00
Dan Poltawski 4e2c620700 Merge branch 'MDL-21801_b_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-10-16 10:30:11 +08:00
Adrian Greeve 7df065ce28 MDL-25275 - mod/data - Added a check box to eliminate date searches if desired. 2012-10-16 10:09:30 +08:00
Mark Nielsen e4ce1be4b5 MDL-34837 backup: Restore does not fail when some courses have the same name 2012-10-15 17:19:17 +08:00
Mark Nielsen e2398ac290 MDL-33621 rating: fixed view help error for global scale rating 2012-10-15 16:49:42 +08:00
Petr Škoda e0b2c13e04 MDL-35917 fix cohort phpdocs
Credit goes to Brian Kremer, thanks!
2012-10-15 15:59:39 +08:00
Aparup Banerjee 55c4569bda Merge branch 'MDL-31010-m22' of git://github.com/ankitagarwal/moodle into MOODLE_22_STABLE 2012-10-15 15:54:05 +08:00
Ankit Agarwal cdd2e30a37 MDL-35889 blocks: Adding a legend to the fieldset 2012-10-15 11:25:06 +08:00
Frederic Massart bd404c8e90 MDL-35171 Forms: Date selector always gets UTF-8 strings 2012-10-15 09:45:57 +08:00
AMOS bot 02fa7996c8 Automatically generated installer lang files 2012-10-15 00:34:59 +00:00
Eloy Lafuente (stronk7) f4b03cf8e2 weekly release 2.2.5+ 2012-10-15 00:19:54 +02:00
Eloy Lafuente (stronk7) f5916ab5af Merge branch 'install_22_STABLE' of git://git.moodle.cz/moodle-install into MOODLE_22_STABLE 2012-10-15 00:07:52 +02:00
Eloy Lafuente (stronk7) 8362d3b35f Revert "MDL-31968 Make NTLM REMOTE_USER format configurable by the admin"
This reverts commit 4496dcc631.

Note that MDL-31968 will be in charge of backporting this to stables
if everything goes well under master (once MDL-31968 is tested and closed)
2012-10-14 23:23:34 +02:00
Eloy Lafuente (stronk7) f06b2de39e Merge branch 'MDL-35858-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-10-12 02:18:31 +02:00
Ankit Agarwal 45ef5c8e73 MDL-28965 administration: Updating description string for the setting navshowallcourses
Conflicts:

	lang/en/admin.php
2012-10-11 17:15:55 +08:00
Rossiani Wijaya e09d4fcb8c MDL-33815 Online Users block: Add query condition to filter out deleted users and lastaccess date greater than now 2012-10-11 16:07:20 +08:00
Rossiani Wijaya a884d3a618 MDL-21801 Lesson Module: Removing import power point functionality 2012-10-11 15:52:35 +08:00
Ankit Agarwal 78a00990b6 MDL-31010 comments: setup_course should update if passed courseid is different from the cached one 2012-10-11 10:58:13 +08:00
Mary Evans 61560ab45a MDL-35231 theme_serenity: fixed misalignment and styling of mod/assignment/action/edit by updating custommenu css in theme/serenity/style/core.css 2012-10-10 13:04:54 +08:00
Aparup Banerjee cc6b32b227 Merge branch 'w41_MDL-35839_m22_enroldeletecleanup' of git://github.com/skodak/moodle into MOODLE_22_STABLE 2012-10-10 10:32:24 +08:00
AMOS bot ffc1f310af Automatically generated installer lang files 2012-10-10 00:34:21 +00:00
Simon Coggins f910245bfd MDL-35581 lib: Help popups misaligned for right-to-left languages 2012-10-10 08:57:55 +13:00
Petr Škoda 407a7bd6a9 MDL-35469 fix Gecko based browser checks
The problem is that latest firefox versions stopped using dates because they lost the meaning over the time.
2012-10-09 15:51:07 +02:00
Frederic Massart 2f0b51b9f4 MDL-35858 question: Fixed display of feedback in cloze questions 2012-10-09 16:13:17 +08:00
Aparup Banerjee 9ed6d76f12 Merge branch 'WIP-MDL-35724-M22_quiz' of git://github.com/nadavkav/moodle into MOODLE_22_STABLE 2012-10-09 14:12:09 +08:00
Aparup Banerjee c5833d278c Merge branch 'MDL-35776_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-10-09 11:54:11 +08:00
Rajesh Taneja fb6f1a4d79 MDL-30691 Adminstration: Added css to break long word in filter table 2012-10-09 10:04:27 +08:00
AMOS bot 43e26415eb Automatically generated installer lang files 2012-10-09 00:34:43 +00:00
Eloy Lafuente (stronk7) aff7cb703a Merge branch 'wip-MDL-26348-m22' of git://github.com/samhemelryk/moodle into MOODLE_22_STABLE 2012-10-09 01:38:32 +02:00
Eloy Lafuente (stronk7) 827dd36f48 Merge branch 'wip-mdl-35397-m22' of git://github.com/rajeshtaneja/moodle into MOODLE_22_STABLE 2012-10-09 00:40:26 +02:00
Iñaki Arenaza 4496dcc631 MDL-31968 Make NTLM REMOTE_USER format configurable by the admin
Signed-off-by: Iñaki Arenaza <iarenaza@mondragon.edu>
2012-10-09 00:17:51 +02:00
Eloy Lafuente (stronk7) 1bffd70569 Merge branch 'wip-mdl-35047-m22' of git://github.com/rajeshtaneja/moodle into MOODLE_22_STABLE 2012-10-08 23:57:31 +02:00
Nadav Kavalerchik 8f8933231c MDL-35724 - Move Question Marks block to the left (Question Bank page),in RTL mode 2012-10-08 11:36:47 +02:00
Nadav Kavalerchik 550f7760a8 MDL-35724 - Right align "Question Type" label in Quiz Editing page, when in RTL mode 2012-10-08 11:36:47 +02:00
Aparup Banerjee d60c0e9650 Merge branch 'WIP-MDL-35723-M22_quiz' of git://github.com/nadavkav/moodle into MOODLE_22_STABLE 2012-10-08 17:16:43 +08:00
Aparup Banerjee 6d4386a6db Merge branch 'wip-MDL-34448-MOODLE_22_STABLE' of git://github.com/abgreeve/moodle into MOODLE_22_STABLE 2012-10-08 15:30:46 +08:00
Adrian Greeve b562dfba48 MDL-34448 - mod/data - Fixing separate groups viewing all entries. 2012-10-08 15:08:33 +08:00
Jerome Mouneyrac 71daa4a6d6 MDL-35198 replace key_exists by array_key_exists 2012-10-08 10:58:43 +08:00
Sam Hemelryk 0766ae0049 Merge branch 'MDL-35634-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-10-08 11:36:12 +13:00
Sam Hemelryk c11496e22d Merge branch 'MDL-35211_M22' of git://github.com/kordan/moodle into MOODLE_22_STABLE 2012-10-08 11:02:24 +13:00
Sam Hemelryk ac78fb7625 Merge branch 'MDL-35667_extra_credit_loop_22' of git://github.com/andyjdavis/moodle into MOODLE_22_STABLE 2012-10-08 10:15:29 +13:00
Sam Hemelryk 4f012c5e58 Merge branch 'MDL-35730_22' of https://github.com/aolley/moodle into MOODLE_22_STABLE 2012-10-08 10:05:52 +13:00
Sam Hemelryk 5467e70128 MDL-32326 dock: Clarified use of CSS rotation 2012-10-08 09:45:48 +13:00
Sam Hemelryk d2cdddff77 MDL-26348 tool_customlang: Fixed up SQL causing issues in Oracle 2012-10-08 09:22:16 +13:00
Petr Škoda 2645ca05d8 MDL-35839 fix invalid enrol instance delete cleanup 2012-10-06 19:39:04 +02:00
AMOS bot 1ef6a07c09 Automatically generated installer lang files 2012-10-06 00:34:02 +00:00
Eloy Lafuente (stronk7) a8ce9071c2 weekly release 2.2.5+ 2012-10-05 13:37:50 +02:00
Eloy Lafuente (stronk7) 7f13fc063c Merge branch 'install_22_STABLE' of git://git.moodle.cz/moodle-install into MOODLE_22_STABLE 2012-10-05 13:33:20 +02:00
Eloy Lafuente (stronk7) 2ecbeeda93 Revert "MDL-34257 quiz 'secure' mode: PAGE initialisation order issues."
This reverts commit e65f54f289.
2012-10-05 13:10:36 +02:00
Dan Poltawski 371e7264d1 Revert "MDL-33117 grade: added some smarts to the user report method inject_rowspans() to deal with activity conditional availability"
This reverts commit 7dc9febe19.
2012-10-05 16:19:29 +08:00
Jason Fowler 04c1d5a342 MDL-32184 - Course - Fixing incorrect redirect when toggling course edit while inside an activity – Patch provided by Kanika Goyal 2012-10-05 15:33:33 +08:00
Rajesh Taneja faaa97b415 MDL-32218 Blocks: allowblockstodock is also checked for region dock status 2012-10-04 17:27:52 +08:00
Rajesh Taneja 32d5bad1e1 MDL-27309 Blocks: command node is taken from dockitem during restore 2012-10-04 15:27:27 +08:00
AMOS bot a3a630251b Automatically generated installer lang files 2012-10-04 00:35:01 +00:00
Tim Hunt 8b3818d97b MDL-35776 user ajax: fix sort order in chrome.
It seems that Chrome orders fields of objects in order of array key.
Therefore we must stop using user.id in the PHP arrays, and instead
ensure that we use sequential numbers.

This commit fixes the enrol UI.
2012-10-03 19:16:44 +01:00
Tim Hunt d06a987343 MDL-35776 user ajax: fix sort order in chrome.
It seems that Chrome orders fields of objects in order of array key.
Therefore we must stop using user.id in the PHP arrays, and instead
ensure that we use sequential numbers.

This commit fixes the user selector.

Conflicts:
	user/selector/module.js
	user/selector/search.php
2012-10-03 19:16:41 +01:00
Frederic Massart 49e4881bff MDL-35634 course: Restored alt attribute on module icons 2012-10-03 17:04:02 +08:00
Dan Poltawski 1c61cadaaf Merge branch 'MDL-35754-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-10-03 10:26:34 +08:00
Frederic Massart 5d07f6e84f MDL-35754 libraries: openpopup() does not fail when window name is not set 2012-10-03 09:58:16 +08:00
Sam Hemelryk bd465e3917 Merge branch 'MDL-33829_22' of https://github.com/andyjdavis/moodle into MOODLE_22_STABLE 2012-10-03 10:07:04 +13:00
Nadav Kavalerchik 6d4d29137c MDL-35723 - Align to center the "Quiz Feedback" label,when in RTL mode 2012-10-02 21:51:50 +02:00
Dan Marsden 221309802a MDL-35557 enrol/database: use distinct call when getting list of courses that should be added. 2012-10-02 20:28:46 +02:00
Dan Marsden bc7088d881 MDL-35562 enrol_database: enrolment_sync - don't halt sync on failed search for course. 2012-10-02 15:59:59 +02:00
Frederic Massart 2bfd174b06 MDL-28235 form: Removed close icon of help icon popups 2012-10-02 14:36:12 +08:00
Frederic Massart 6b8e97b017 MDL-28235 form: Help button popup close accessibility improved
AMOS BEGIN
 CPY [close,editor],[close,form]
AMOS END
2012-10-02 14:36:11 +08:00
Rajesh Taneja a284ccfdba MDL-35397 Administration: changed link for 'many other contributors'
Previously 'many other contributors' was pointing to http://docs.moodle.org/dev/Credits
now, it will point to http://moodle.org/dev.
2012-10-02 14:26:35 +08:00
Rajesh Taneja b5f0654fd2 MDL-35047 tool_xmldb: Added missing strings for xmldb 2012-10-02 14:22:52 +08:00
Dan Poltawski f187922695 Merge branch 'MDL-34570-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-10-02 13:57:08 +08:00
Adam Olley 0f8f88e7f0 enrol_manual: Set context correctly in manual enrolment user selector 2012-10-02 15:01:14 +09:30
Dan Poltawski 73e4647509 Merge branch 'MDL-35370_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-10-02 12:09:44 +08:00
Dan Poltawski a028dd0ff1 Merge branch 'MDL-35693_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-10-02 11:48:15 +08:00
Dan Poltawski 9956462ee4 Merge branch 'WIP-MDL-35708-M22_quiz' of git://github.com/nadavkav/moodle into MOODLE_22_STABLE 2012-10-02 11:37:04 +08:00
Dan Poltawski 34ab1dd7b1 Merge branch 'w40_MDL-35619_m22_otheravatars' of git://github.com/skodak/moodle into MOODLE_22_STABLE 2012-10-02 10:42:06 +08:00
Dan Poltawski e412ca95b4 Merge branch 'MDL-30514_22' of git://github.com/stronk7/moodle into MOODLE_22_STABLE 2012-10-02 10:35:00 +08:00
Dan Poltawski f3493f8a78 Merge branch 'MDL-35680_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-10-02 09:52:50 +08:00
Jody Steele 395354cfe0 MDL-33933 mod_forum: fix incorrect capability check 2012-10-02 09:44:29 +08:00
Dan Poltawski 9b112d78bc Merge branch 'MDL-33117_grade_display_22' of git://github.com/andyjdavis/moodle into MOODLE_22_STABLE 2012-10-02 09:33:24 +08:00
Eloy Lafuente (stronk7) 086a156564 MDL-35669 gravatar Fix secure image urls.
Conflicts:
	lib/outputcomponents.php
2012-10-02 01:39:14 +02:00
Sam Hemelryk d5cb1a4096 Merge branch 'm22_MDL-35472' of git://github.com/totara/moodle into MOODLE_22_STABLE 2012-10-02 11:10:13 +13:00
Sam Hemelryk 4fd7c545cc Merge branch 'MDL-34257_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-10-02 10:45:44 +13:00
Michael Aherne 60bbf98971 MDL-35669 gravatar Provide default image URL to Gravatar
Conflicts:
	admin/settings/users.php
	lib/outputcomponents.php
2012-10-01 23:39:11 +02:00
Sam Hemelryk 7697512a90 Merge branch 'MDL-35547_22' of git://github.com/enovation/moodle into MOODLE_22_STABLE 2012-10-02 10:15:19 +13:00
Eloy Lafuente (stronk7) 1950fefc99 Merge branch 'MDL-34931-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-10-01 13:37:26 +02:00
Eloy Lafuente (stronk7) ab6a0f497b Merge branch 'MDL-35637_m22' of git://github.com/markn86/moodle into MOODLE_22_STABLE 2012-10-01 13:19:35 +02:00
Eloy Lafuente (stronk7) de165bab23 Merge branch 'MDL-35644-MOODLE_22_STABLE' of git://github.com/mouneyrac/moodle into MOODLE_22_STABLE 2012-10-01 12:46:41 +02:00
Petr Škoda 10a75e713b MDL-35619 fix invalid avatars on other users page 2012-10-01 09:54:48 +02:00
Andrew Davis 6bff753746 MDL-31782 core_grade: fixed a potential infinite loop 2012-10-01 12:59:35 +08:00
Nadav Kavalerchik 74329146af MDL-35708 - Right align user's information in quiz attempt review page , when in RTL mode (theme/standard & base) 2012-10-01 00:01:01 +02:00
Tomasz Muras 237897b968 MDL-35547 Fetch more sub-categories with one SQL query. 2012-09-30 19:27:21 +02:00
Tomasz Muras 8c39dfb9ba MDL-35547 Detect loops in question categories. 2012-09-30 19:27:19 +02:00
Tomasz Muras 54e95b2d33 MDL-35547 Detect question category pointing to itself as a parent. 2012-09-30 19:27:18 +02:00
Andrew Davis e1f24eb46e MDL-33829 mod_glossary: added some smarts so glossary entries with an image in their description are classed as richhtml instead of plainhtml 2012-09-30 11:02:43 +08:00
Jason Fowler 6d84d37b91 MDL-33829 - Glossary - Adding Rich Portfolio Export support 2012-09-30 11:02:23 +08:00
AMOS bot eead9917a5 Automatically generated installer lang files 2012-09-29 00:34:20 +00:00
Tim Hunt daa3fe0ab6 MDL-35693 question engine: set id when saving a new question_attempt 2012-09-28 15:29:27 +01:00
Eloy Lafuente (stronk7) 7b18f18a1e MDL-30514 registration: table aliases don't use AS keyword
This is a backport of both MDL-34072, MDL-34440 (initial fix
and following regression). Basically it's about to observe #12 of:
    http://docs.moodle.org/dev/Database
(Use the AS keyword always with column aliases but not with table aliases)
2012-09-28 14:02:52 +02:00
Andrew Davis 7dc9febe19 MDL-33117 grade: added some smarts to the user report method inject_rowspans() to deal with activity conditional availability 2012-09-28 12:14:54 +08:00
Frederic Massart 5a930d13fd MDL-34570 Accessibility: Adding labels on text inputs and selects to questions 2012-09-28 11:38:58 +08:00
Rossiani Wijaya 735280b159 MDL-34570 accessibility compliance for question: edit string label 2012-09-28 11:38:58 +08:00
Frederic Massart 0295ae4ee7 MDL-34931 core_grade: Fixed grades hidden when activity is hidden 2012-09-28 11:38:48 +08:00
Tim Hunt db46eddf41 MDL-35680 user selector: more usable when queries are slow.
The problem is to do when you pause a bit, so a search starts, and then
type a bit more before the search finishes. It was behaving like this:

1. Type a bit, then pause.
2. First search request sent.
3. Type a bit more, then pause.
4. Second search request sent.
5. First search request completes.
6. You try to select one result.
7. Second search request comples, overwriting what you are selecting.

This fix works by cancelling the first request before sending the
second.
2012-09-27 19:11:26 +01:00
Tim Hunt db6d764fe2 MDL-35620 question engine: should distinguish NULL and 0.
This only matters in an obscure edge case, but it is an edge case we hit
with one of the OU question types.

This load data code is processing the results of a LEFT JOIN, so is_null
is the correct logic.
2012-09-27 12:36:15 +01:00
Tim Hunt f3872e7b42 MDL-35370 cloze qtype: distinguish wrong & unanswered subqs
This affects the subquestions that appear as an embedded text input box.

There are three cases:
1. Input for subq left blank
2. Input for subq was wrong, and matched by a * wildcard.
3. Input for subq was wrong, and did not match any answer.

2. and 3. should look identical, apart from any feedback in case 2.

1. is different. The state should be displayed as "Not answered" even
though the mark for this part is still shown as 0.

Also, we slighly improve handling of , for decimal point in multianswer,
although there are still issues.

While working on this, I made some minor clean-ups in shortanswer and
numerical qtypes.
2012-09-27 12:35:57 +01:00
Tim Hunt e65f54f289 MDL-34257 quiz 'secure' mode: PAGE initialisation order issues. 2012-09-27 12:35:07 +01:00
Dan Poltawski c5575c63b8 weekly release 2.2.5+ 2012-09-27 18:50:48 +08:00
Dan Poltawski d935a6fd68 Merge branch 'install_22_STABLE' of git://git.moodle.cz/moodle-install into MOODLE_22_STABLE 2012-09-27 18:48:00 +08:00
Mark Nelson dde080fb66 MDL-35637 group: Fix form submission error that occurs when GD version is not set. 2012-09-27 13:57:18 +08:00
Dan Poltawski 1e1d19d477 Revert "MDL-32184 - Course - Fixing incorrect redirect when toggling course edit while inside an activity – Patch provided by Kanika Goyal"
This reverts commit 74d4c9e631.
2012-09-27 11:32:14 +08:00
Nadav Kavalerchik 2acaf9cfee MDL-35246 - Invert all action arrows in Question Bank categories management, when in RTL mode 2012-09-26 23:54:53 +02:00
Jerome Mouneyrac 55cab152a4 MDL-35644 user_get_details: admin should be able to see description
Conflicts:

	user/lib.php
2012-09-26 14:34:04 +08:00
Sam Hemelryk 57264882c7 Merge branch 'wip-MDL-34476-stable22' of git://github.com/phalacee/moodle into MOODLE_22_STABLE 2012-09-26 14:27:52 +12:00
Jason Fowler b244e7da9e MDL-34476 - Blocks - Fixing context issue 2012-09-26 10:17:21 +08:00
Sam Hemelryk 414568e144 Merge branch 'MDL-34573_accessibility_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-09-26 10:10:11 +12:00
Sam Hemelryk d122b47456 Merge branch 'wip-MDL-34476-stable22' of git://github.com/phalacee/moodle into MOODLE_22_STABLE 2012-09-26 08:32:41 +12:00
Sam Hemelryk 1b00f61d87 Merge branch 'MDL-31976-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-09-26 08:20:30 +12:00
Dan Poltawski 7062b887db Merge branch 'MDL-34778_accessibility_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-09-25 13:43:49 +08:00
Dan Poltawski 71919db800 Merge branch 'MDL-34571_accessibility_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-09-25 13:11:19 +08:00
Nadav Kavalerchik 5f0341a76b MDL-35576 - Right padding is missing on Date field/element, when in RTL mode (minor fix)
Conflicts:
	theme/base/style/core.css
2012-09-25 01:25:18 +02:00
Nadav Kavalerchik 1d439b59e4 MDL-35537 - Right align registration text on login page, when in RTL mode 2012-09-25 00:37:14 +02:00
Sam Hemelryk 22d38f8b2e Merge branch 'MDL-34607-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-09-25 09:54:52 +12:00
Dan Poltawski b37dc152c2 Merge branch 'MDL-35207-workshop-attachments-upgrade_22' of git://github.com/mudrd8mz/moodle into MOODLE_22_STABLE 2012-09-24 16:48:32 +08:00
Dan Poltawski 370cb335b1 Merge branch 'wip-MDL-32184-s22' of http://github.com/phalacee/moodle into MOODLE_22_STABLE 2012-09-24 15:36:18 +08:00
Dan Poltawski c5a5eed7f9 Merge branch 'MDL-26940-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-09-24 15:32:41 +08:00
Jason Fowler 74d4c9e631 MDL-32184 - Course - Fixing incorrect redirect when toggling course edit while inside an activity – Patch provided by Kanika Goyal 2012-09-24 15:29:31 +08:00
Frederic Massart e3d0ad1683 MDL-31499 Javascript: Handle invalid window names in openpopup 2012-09-24 15:24:14 +08:00
Sam Hemelryk 3b9ed3037f Merge branch 'MDL-35379-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-09-24 15:42:06 +12:00
Dan Poltawski c5bc14690f Revert "MDL-35442 Add settings and uninstall link for local plugins"
This doesn't work on 2.2.

This reverts commit 7fa1f180d6.
2012-09-24 11:26:30 +08:00
Sam Hemelryk 782a1b4633 Merge branch 'MDL-35517_22' of git://github.com/stronk7/moodle into MOODLE_22_STABLE 2012-09-24 15:21:21 +12:00
Ruslan Kabalin 7fa1f180d6 MDL-35442 Add settings and uninstall link for local plugins 2012-09-24 11:19:58 +08:00
Dan Poltawski 3900516886 Merge branch 'MDL-35242-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-09-24 11:08:26 +08:00
Sam Hemelryk d2621a28f5 Merge branch 'MDL-30889-m22' of git://github.com/ankitagarwal/moodle into MOODLE_22_STABLE 2012-09-24 15:05:35 +12:00
Dan Poltawski 92238a4408 Merge branch 'wip-MDL-35001-MOODLE_22_STABLE' of git://github.com/marinaglancy/moodle into MOODLE_22_STABLE 2012-09-24 10:20:09 +08:00
David Mudrák dd7946d997 MDL-35207 Fix 1.9 > 2.x upgrade of workshop submission attachments
Attachments of submission with non-linear ids in 1.9 database were not
upgraded correctly due to old id and new id mismatch. Credit goes to
Juan Segarra Montesinos for spotting the problem and suggesting a patch.
2012-09-22 23:32:35 +02:00
Jason Fowler d1d4c85edc MDL-34476 - Course Completeion, Blocks - Allowing teachers to access the Full Course Report from the Course Completion Block -- Initial patch provided by Nadav Kavalerchik 2012-09-21 15:26:20 +08:00
Ankit Agarwal 89001dfb54 MDL-30889 calendar: Adding focus and blur events to calendar renderer 2012-09-21 14:38:41 +08:00
Frederic Massart 039399e66f MDL-31976 Accessbility: Action icons on course page do not need title attributes
Conflicts:

	course/format/renderer.php
	course/lib.php
	course/yui/toolboxes/toolboxes.js
	lib/yui/dragdrop/dragdrop.js
2012-09-21 11:30:25 +08:00
Simon Coggins 28f6aa743f MDL-35379 Repository: WebDAV supports / as a path 2012-09-21 11:30:15 +08:00
Frederic Massart f3d73474fe MDL-35242 Web Services: Removed translation causing error in add_to_log 2012-09-21 09:56:20 +08:00
Frederic Massart 98f282f680 MDL-34607 File API: Removed ordering by sortorder in area tree 2012-09-21 09:55:49 +08:00
AMOS bot 970f23ad5c Automatically generated installer lang files 2012-09-21 00:34:54 +00:00
Eloy Lafuente (stronk7) 909c277796 MDL-35517 course: Handle non-existing $course->maxbytes on course creation. 2012-09-20 10:20:30 +02:00
Dan Poltawski f9a85712d5 weekly release 2.2.5+ 2012-09-20 14:11:24 +08:00
Dan Poltawski 8dd5f4f086 Merge branch 'install_22_STABLE' of git://git.moodle.cz/moodle-install into MOODLE_22_STABLE 2012-09-20 14:06:45 +08:00
Eloy Lafuente (stronk7) 601071fb10 MDL-33166 forum: fetch cmid to be used by capability checks. 2012-09-19 21:42:29 +02:00
Dan Poltawski b4e47dbb93 Merge branch 'wip-mdl-30833-m22' of git://github.com/rajeshtaneja/moodle into MOODLE_22_STABLE 2012-09-19 09:52:28 +08:00
AMOS bot bae9b4c866 Automatically generated installer lang files 2012-09-19 00:34:26 +00:00
Eloy Lafuente (stronk7) 64fed39c7c MDL-33166 Forum: whitespace fix 2012-09-19 00:51:22 +02:00
Eloy Lafuente (stronk7) c43fe7f71e Merge branch 'wip-mdl-33166-m22' of git://github.com/rajeshtaneja/moodle into MOODLE_22_STABLE 2012-09-19 00:39:26 +02:00
Simon Coggins 8ed9c72991 MDL-35472: Prevent html tags appearing in page titles
Only a problem when formatstringstriptags is disabled
2012-09-19 09:09:04 +12:00
Petr Škoda 9559ed75c3 MDL-32572 fix notice when changing internal auth_db passwords 2012-09-18 19:53:40 +02:00
Petr Škoda 8f93c4084f MDL-32572 skip problematic users in auth_db sync 2012-09-18 19:53:07 +02:00
Petr Škoda b8bf75156f MDL-32572 always lookpup passwords only in records from current auth plugin
This bug should not be creating any problems thanks to our design of login process, but it should be fixed anyway.
2012-09-18 19:52:36 +02:00
Rajesh Taneja 07b3331b59 MDL-30833 Accessibility: Added aria-expanded attribute on navigation nodes 2012-09-18 17:30:09 +08:00
Dan Poltawski 8e5440c9fc Merge branch 'MDL-30909-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-09-18 15:08:08 +08:00
Frederic Massart 32bdbf913b MDL-30909 Accessibility: Improved access to reply form in forums 2012-09-18 14:55:43 +08:00
Dan Poltawski d875f8605e Merge branch 'wip-mdl-30831-m22' of git://github.com/rajeshtaneja/moodle into MOODLE_22_STABLE 2012-09-18 14:52:04 +08:00
Eloy Lafuente (stronk7) a6e1cc12c8 Merge branch 'MDL-32688-m22' of git://github.com/itamart/moodle into MOODLE_22_STABLE 2012-09-18 01:54:00 +02:00
Eloy Lafuente (stronk7) 3b4f791ba0 Merge branch 'MDL-35419_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-09-18 01:30:45 +02:00
Charles Fulton 35cc173d46 MDL-32230 block_rss_client: remove extra cleaning step 2012-09-18 01:23:20 +02:00
Eloy Lafuente (stronk7) 53b1a1ecb2 Merge branch 'MDL-34841_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-09-18 01:16:15 +02:00
Dan Poltawski 9facd25c14 Merge branch 'MDL-30847_22' of git://github.com/dmonllao/moodle into MOODLE_22_STABLE 2012-09-17 12:40:12 +08:00
Rossiani Wijaya 3a9cbdc72a MDL-34778 enrol: add a space 2012-09-17 12:16:32 +08:00
Rossiani Wijaya 10964239be MDL-34778 accessibility compliance for enrol: add label tag for input text 2012-09-17 12:16:32 +08:00
Rossiani Wijaya cfaf6a18b9 MDL-34571 accessibility compliance for report: Add label to select and input text form 2012-09-17 12:15:59 +08:00
Dan Poltawski f0cbaa1c19 Merge branch 'MDL-34975-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-09-17 12:00:24 +08:00
Marina Glancy 64346429fe MDL-35001 removed cycle detection from convert_to_array because it causes error in data 2012-09-17 11:26:58 +08:00
Rajesh Taneja 2f861c915b MDL-30831 Accessibility: Added aria role and attributes to dock block 2012-09-17 10:13:52 +08:00
Rex Lorenzo 30bdc936fd MDL-33166 Forum: Adding capability mod/forum:allowforcesubscribe
Conflicts:

	mod/forum/version.php

Conflicts:

	mod/forum/version.php
2012-09-17 10:08:15 +08:00
Frederic Massart 3b79304ba5 MDL-34975 Accessibility: Collapsible areas captions can be clicked to expand/collapse 2012-09-17 09:44:29 +08:00
David Monllao afc54475a8 MDL-30847 core Adding ARIA attribute to help windows 2012-09-17 09:27:38 +08:00
Petr Škoda 14e497c06e MDL-35454 ignore invalid $custombytes in get_max_upload_sizes()
This fixes installation and phpunit init regression.
2012-09-17 00:09:19 +02:00
Itamar Tzadok 4818668672 MDL-32688 My Moodle - Fixed fatal error in guest access to My Moodle 2012-09-14 15:20:49 -04:00
Eloy Lafuente (stronk7) 4db36990ee weekly release 2.2.5+ 2012-09-14 19:09:31 +02:00
Eloy Lafuente (stronk7) 62a22d5b9a Merge branch 'install_22_STABLE' of git://git.moodle.cz/moodle-install into MOODLE_22_STABLE 2012-09-14 19:03:37 +02:00
Eloy Lafuente (stronk7) ba15c14fee Revert "MDL-32125 mod_forum: updating subscription mode not reflected"
This reverts commit 6a5e3c1d9d.
2012-09-14 10:40:31 +02:00
Tim Hunt ee7a9058a0 MDL-35419 question manual grading: valdiation must handle 0,5
Yet another , as decimal separator issue!

To fix this nicely, I refactored some code into question_utils.
2012-09-13 16:43:27 +01:00
AMOS bot 0089ebaaa9 Automatically generated installer lang files 2012-09-13 00:34:35 +00:00
Sam Hemelryk 04ec524d74 Merge branch 'm22_MDL-32125_forum_subscription_change_reflected' of git://github.com/kanikagoyal/moodle into MOODLE_22_STABLE 2012-09-13 11:25:29 +12:00
Sam Hemelryk b7367b9638 Merge branch 'wip-mdl-30667-m22' of git://github.com/rajeshtaneja/moodle into MOODLE_22_STABLE 2012-09-13 11:18:03 +12:00
Sam Hemelryk 0686d3dc4c Merge branch 'MDL-29872_c_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-09-13 11:12:37 +12:00
Tim Hunt b252a84543 MDL-34841 error importing questions with long names.
The problem was with the non-UTF-8-safe way that a question name
was being constructed from the question text.

I have done a proper fix with methods in the base class to
carefully construct a question name that is reasonable, and
which will fit in the database column. Then I have changed all
importers to use the new methods.

I also remembered not to break the lesson in the process.
2012-09-12 17:43:00 +01:00
David Monllao 7f2d81c7b6 MDL-35264 mod_chat Bigger frame for text input 2012-09-12 14:54:26 +08:00
Frederic Massart ab6c91d42a MDL-34765 Course: Removed unknown constant when reordering 2012-09-12 13:50:24 +08:00
Sam Hemelryk b95d2cc35e Merge branch 'MDL-30829-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-09-12 10:27:40 +12:00
Eloy Lafuente (stronk7) 63c4c85eff Merge branch 'MDL-34984_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-09-11 16:30:58 +02:00
Frederic Massart 8b662ca83f MDL-34765 Course: Fixed missing argument in course reordering 2012-09-11 16:41:26 +12:00
Sam Hemelryk ccbf68066b Merge branch 'MDL-34765-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-09-11 15:31:09 +12:00
Sam Hemelryk 4340e2faac Merge branch 'MDL-30018_22' of https://github.com/stronk7/moodle into MOODLE_22_STABLE 2012-09-11 15:21:44 +12:00
Sam Hemelryk 1db9d1e7ec Merge branch 'MDL-10259_22' of git://github.com/dmonllao/moodle into MOODLE_22_STABLE 2012-09-11 15:18:31 +12:00
Sam Hemelryk 22f55d840c Merge branch 'MDL-30857_22' of git://github.com/dmonllao/moodle into MOODLE_22_STABLE 2012-09-11 15:10:39 +12:00
Eloy Lafuente (stronk7) 2b9782fdd0 Merge branch 'MDL-35171_m22' of git://github.com/merrill-oakland/moodle into MOODLE_22_STABLE 2012-09-11 02:45:08 +02:00
Eloy Lafuente (stronk7) 0f43c24385 Merge branch 'MDL-29348-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-09-11 02:23:16 +02:00
Sam Hemelryk b818dfc2d7 Merge branch 'MDL-34916_M22' of git://github.com/kordan/moodle into MOODLE_22_STABLE 2012-09-11 12:06:04 +12:00
Eloy Lafuente (stronk7) 686723f4fa Merge branch 'm22_MDL-35123' of git://github.com/danmarsden/moodle into MOODLE_22_STABLE 2012-09-11 02:03:24 +02:00
Eloy Lafuente (stronk7) 5f48905520 Merge branch 'm22_MDL-35208' of git://github.com/danmarsden/moodle into MOODLE_22_STABLE 2012-09-11 01:57:53 +02:00
Eloy Lafuente (stronk7) 86e2c59128 Merge branch 'MDL-35257-22' of git://github.com/danpoltawski/moodle into MOODLE_22_STABLE 2012-09-11 01:53:48 +02:00
Sam Hemelryk 94ff6cf6fb Merge branch 'MDL-27786-m22' of git://github.com/ankitagarwal/moodle into MOODLE_22_STABLE 2012-09-11 11:15:14 +12:00
Sam Hemelryk f50e16d07e Merge branch 'MDL-33374-m22' of git://github.com/ankitagarwal/moodle into MOODLE_22_STABLE 2012-09-11 11:10:15 +12:00
David Mudrák 1c3d93d3ca MDL-35272 Fix typo in qformat_blackboard_six.php
Credit goes to German Valero for spotting and reporting this.
2012-09-11 01:03:34 +02:00
Adrian Greeve a8a779115c MDL-32785 - lib - Ignorning hard frozen fields when submitting data. 2012-09-11 10:48:14 +12:00
Eloy Lafuente (stronk7) 4eca916b5f Merge branch 'w37_MDL-35289_m22_tinymcelangs' of git://github.com/skodak/moodle into MOODLE_22_STABLE 2012-09-10 19:53:54 +02:00
Eloy Lafuente (stronk7) 694c861e81 Merge branch 'MDL-35343_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-09-10 16:42:09 +02:00
Tim Hunt fa7298ed7f MDL-35343 JavaScript visible in multichoice choice feedback.
Also, Match correct answer, and calculated multi and multianswer
feedback.
2012-09-10 13:08:28 +01:00
Frederic Massart 03cc152087 MDL-30829 Accessibility: Docking a block disables the accessible anchors 2012-09-10 17:22:01 +08:00
David Monllao 6c27894dd2 MDL-30857 block_community Removing comments hardcoded height 2012-09-10 15:00:03 +08:00
Aparup Banerjee 057d68fc2e Merge branch 'MDL-35264_22' of git://github.com/dmonllao/moodle into MOODLE_22_STABLE 2012-09-10 14:39:20 +08:00
Aparup Banerjee 1aac11d74d Merge branch 'MDL-27398_22' of git://github.com/dmonllao/moodle into MOODLE_22_STABLE 2012-09-10 14:32:06 +08:00
David Monllao 2532c36ea3 MDL-27398 mod_chat Removing PAGE references 2012-09-10 14:11:31 +08:00
David Monllao 6bf9b6a996 MDL-27398 mod_chat Adding file basic doc 2012-09-10 14:11:31 +08:00
David Monllao 9405709c55 MDL-27398 mod_chat Removing deprecated calls and moving dependencies
Credit to Jorge Villalon
2012-09-10 14:11:21 +08:00
David Monllao 94e2c182fa MDL-27398 mod_chat Adding CLI_SCRIPT to chat daemon
Credit to Jorge Villalon
2012-09-10 14:11:13 +08:00
Aparup Banerjee b216fc392f Merge branch 'MDL-34068_22' of git://github.com/dmonllao/moodle into MOODLE_22_STABLE 2012-09-10 13:43:00 +08:00
Eloy Lafuente (stronk7) cb69b471bd MDL-30018 restore: better answer matching. Credit goes to Tyler Bannister, thanks!
On backup, contents are cleaned to be safe utf8. That was leading to
some matching problems on restore against not cleaned DB contents (for
already existing questions). This commit adds one fallback method to
perform the match against cleaned DB contents.
2012-09-09 20:30:20 +02:00
Petr Škoda d184770c60 MDL-35289 add missing charmap usage info string 2012-09-07 10:31:12 +02:00
Rossiani Wijaya 8eb614d4bb MDL-29872 Dropbox repository: add message handler to filepicker header and add message to logout from dropbox.
When user clicked on logout button from dropbox repository, it will also logging them out from dropbox site through a popup window
2012-09-07 15:45:46 +08:00
Rossiani Wijaya 47ad6d600d MDL-34573 - add label for search tag input text 2012-09-07 15:45:08 +08:00
Rossiani Wijaya b9b2d11960 MDL-34573 Tag: update label for suggested tag 2012-09-07 15:45:07 +08:00
Rossiani Wijaya 5da3e35ed3 MDL-34573 accessibility compliance for tag: Add forform input text and select tag 2012-09-07 15:45:07 +08:00
Rossiani Wijaya e08b39e0b4 MDL-34984 admin setting: fixed labeling and shortname display for admin setting 2012-09-07 15:44:41 +08:00
David Monllao 3e0f93136f MDL-34068 mod_chat Sending text/html headers when sending the messages frame output for the first time 2012-09-07 12:12:47 +08:00
David Monllao a29aca57ee MDL-35264 mod_chat Changing the input frame of chat daemon method to a embedded page layout 2012-09-07 12:08:35 +08:00
David Monllao 2fcb88838f MDL-10259 core Adding a search courses box if there are too many courses 2012-09-07 11:31:09 +08:00
Dan Poltawski 879c7655f2 MDL-35257 lib: if $CFG->logguests is disabled, avoid some log actions
This is for performance, else there can be great contention on the guest
user record as we've seen on moodle.org.
2012-09-07 10:25:59 +08:00
Ankit Agarwal 1d9a7b68f7 MDL-27786 calendar: Changing the eventname string for accessibility 2012-09-07 10:21:51 +08:00
Ankit Agarwal 4df3274355 MDL-33374 profile: Use correct text for buttons when creating a new user 2012-09-07 10:19:25 +08:00
Dan Marsden 88c5506d1b MDL-35123 SCORM: cleaner version of get_last_attempt and get_last_completed_attempt, fixes support for MS Sql driver 2012-09-06 18:47:30 +12:00
Kordan e8cfd996f0 MDL-34916 theme_formal_white: added support for relative path of logos 2012-09-04 09:46:18 +02:00
Kordan 395f285f91 MDL-35211 theme_formal_white: updated descriptions involved in MDL-34916 2012-09-04 09:13:44 +02:00
Dan Marsden b8b00afaf3 MDL-35208 mod_choice: respect order of options when running backup 2012-09-04 11:02:45 +12:00
Rajesh Taneja 79d375eeba MDl-30667 Course: Maxbytes list will show current value, if it's lower then maxbytes 2012-09-03 14:45:00 +08:00
Frederic Massart b04ba37864 MDL-29348 Repository: WebDAV displays a breadcrumb 2012-09-03 14:10:33 +08:00
Frederic Massart a30912967c MDL-34765 Course: Re-sorting courses uses natural order 2012-09-03 14:10:05 +08:00
Eric Merrill 1ca2bdc0c8 MDL-35171 formslib Updating date config array to fix problems with month jumping.
Based on https://bugs.php.net/bug.php?id=49115, if you request a month, but do not
specify a date, it will use your current date, which may be beyon a date in the month
requested, causing the return of the next month. This patch specifies the date (1st).
2012-09-01 10:17:33 -04:00
Charles Fulton 7f649757b5 MDL-32712 assignment: convert default format value during upgrade 2012-07-28 13:09:00 -07:00
Kanika Goyal 6a5e3c1d9d MDL-32125 mod_forum: updating subscription mode not reflected 2012-04-02 10:04:18 +05:30
361 changed files with 6142 additions and 4268 deletions
+2 -1
View File
@@ -28,7 +28,8 @@ require_once(dirname(dirname(__FILE__)) . '/config.php');
require_once($CFG->libdir . '/adminlib.php');
require_once($CFG->libdir . '/pluginlib.php');
require_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM));
admin_externalpage_setup('pluginsoverview');
require_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM));
$output = $PAGE->get_renderer('core', 'admin');
echo $output->plugin_management_page(plugin_manager::instance());
+1 -1
View File
@@ -374,7 +374,7 @@ class core_admin_renderer extends plugin_renderer_base {
$copyrighttext = '<a href="http://moodle.org/">Moodle</a> '.
'<a href="http://docs.moodle.org/dev/Releases" title="'.$CFG->version.'">'.$CFG->release.'</a><br />'.
'Copyright &copy; 1999 onwards, Martin Dougiamas<br />'.
'and <a href="http://docs.moodle.org/dev/Credits">many other contributors</a>.<br />'.
'and <a href="http://moodle.org/dev">many other contributors</a>.<br />'.
'<a href="http://docs.moodle.org/dev/License">GNU Public License</a>';
//////////////////////////////////////////////////////////////////////////////////////////////////
+8 -3
View File
@@ -41,6 +41,9 @@ $return = true;
if (!empty($edit) || !empty($new)) {
if (!empty($edit)) {
$instance = repository::get_instance($edit);
if ($instance->instance->contextid != $context->id) {
throw new repository_exception('nopermissiontoaccess', 'repository');
}
$instancetype = repository::get_type_by_id($instance->options['typeid']);
$classname = 'repository_' . $instancetype->get_typename();
$configs = $instance->get_instance_option_names();
@@ -103,10 +106,12 @@ if (!empty($edit) || !empty($new)) {
$return = true;
} else if (!empty($delete)) {
$instance = repository::get_instance($delete);
//if you try to delete an instance set as readonly, display an error message
if ($instance->readonly) {
throw new repository_exception('readonlyinstance', 'repository');
}
// If you try to delete an instance set as readonly, display an error message.
throw new repository_exception('readonlyinstance', 'repository');
} else if ($instance->instance->contextid != $context->id) {
throw new repository_exception('nopermissiontoaccess', 'repository');
}
if ($sure) {
if (!confirm_sesskey()) {
print_error('confirmsesskeybad', '', $baseurl);
+3 -2
View File
@@ -35,10 +35,11 @@ if ($hassiteconfig
$temp->add(new admin_setting_configselect('moodlecourse/showgrades', get_string('showgrades'), get_string('coursehelpshowgrades'), 1,array(0 => get_string('no'), 1 => get_string('yes'))));
$temp->add(new admin_setting_configselect('moodlecourse/showreports', get_string('showreports'), '', 0,array(0 => get_string('no'), 1 => get_string('yes'))));
$currentmaxbytes = get_config('moodlecourse', 'maxbytes');
if (isset($CFG->maxbytes)) {
$choices = get_max_upload_sizes($CFG->maxbytes);
$choices = get_max_upload_sizes($CFG->maxbytes, 0, 0, $currentmaxbytes);
} else {
$choices = get_max_upload_sizes();
$choices = get_max_upload_sizes(0, 0, 0, $currentmaxbytes);
}
$temp->add(new admin_setting_configselect('moodlecourse/maxbytes', get_string('maximumupload'), get_string('coursehelpmaximumupload'), key($choices), $choices));
+1
View File
@@ -150,6 +150,7 @@ if ($hassiteconfig
'institution' => get_string('institution'),
)));
$temp->add(new admin_setting_configcheckbox('enablegravatar', get_string('enablegravatar', 'admin'), get_string('enablegravatar_help', 'admin'), 0));
$temp->add(new admin_setting_configtext('gravatardefaulturl', get_string('gravatardefaulturl', 'admin'), get_string('gravatardefaulturl_help', 'admin'), 'mm'));
}
$ADMIN->add('roles', $temp);
+1 -1
View File
@@ -488,7 +488,7 @@ class tool_customlang_translator implements renderable {
list($insql, $inparams) = $DB->get_in_or_equal($filter->component, SQL_PARAMS_NAMED);
$csql = "SELECT COUNT(*)";
$fsql = "SELECT s.id, s.*, c.name AS component";
$fsql = "SELECT s.*, c.name AS component";
$sql = " FROM {tool_customlang_components} c
JOIN {tool_customlang} s ON s.componentid = c.id
WHERE s.lang = :lang
+4
View File
@@ -67,3 +67,7 @@
#page-admin-tool-customlang-index .continuebutton {
margin-top: 1em;
}
.path-admin-tool-customlang #translator .standard.master.cell.c2 {
word-break: break-all;
}
+5 -1
View File
@@ -285,7 +285,11 @@ if ($formdata = $mform2->is_cancelled()) {
$userserrors++;
continue;
}
if ($user->username !== clean_param($user->username, PARAM_USERNAME)) {
$upt->track('status', get_string('invalidusername', 'error', 'username'), 'error');
$upt->track('username', $errorstr, 'error');
$userserrors++;
}
if ($existinguser = $DB->get_record('user', array('username'=>$user->username, 'mnethostid'=>$CFG->mnet_localhost_id))) {
$upt->track('id', $existinguser->id, 'normal', false);
}
+3
View File
@@ -112,10 +112,13 @@ $string['checkindexes'] = 'Check indexes';
$string['check_indexes'] = 'Look for missing DB indexes';
$string['checkoraclesemantics'] = 'Check semantics';
$string['check_oracle_semantics'] = 'Look for incorrect length semantics';
$string['duplicateindexname'] = 'Duplicate index name';
$string['incorrectfieldname'] = 'Incorrect name';
$string['index'] = 'Index';
$string['indexes'] = 'Indexes';
$string['indexnameempty'] = 'Index name is empty';
$string['integerincorrectlength'] = 'Incorrect length for integer field';
$string['incorrectindexname'] = 'Incorrect index name';
$string['incorrectkeyname'] = 'Incorrect key name';
$string['incorrecttablename'] = 'Incorrect table name';
$string['key'] = 'Key';
+2 -2
View File
@@ -81,7 +81,7 @@ function user_download_ods($fields) {
$worksheet = array();
$worksheet[0] =& $workbook->add_worksheet('');
$worksheet[0] = $workbook->add_worksheet('');
$col = 0;
foreach ($fields as $fieldname) {
$worksheet[0]->write(0, $col, $fieldname);
@@ -119,7 +119,7 @@ function user_download_xls($fields) {
$worksheet = array();
$worksheet[0] =& $workbook->add_worksheet('');
$worksheet[0] = $workbook->add_worksheet('');
$col = 0;
foreach ($fields as $fieldname) {
$worksheet[0]->write(0, $col, $fieldname);
+1 -1
View File
@@ -97,7 +97,7 @@ $usersmissingcaps = $webservicemanager->get_missing_capabilities_by_users($allow
//add the missing capabilities to the allowed users object to be displayed by renderer
foreach ($allowedusers as &$alloweduser) {
if (!is_siteadmin($alloweduser->id) and key_exists($alloweduser->id, $usersmissingcaps)) {
if (!is_siteadmin($alloweduser->id) and array_key_exists($alloweduser->id, $usersmissingcaps)) {
$alloweduser->missingcapabilities = implode(', ', $usersmissingcaps[$alloweduser->id]);
}
}
+21 -7
View File
@@ -65,7 +65,7 @@ class auth_plugin_db extends auth_plugin_base {
$authdb->Close();
// user exists externally
// check username/password internally
if ($user = $DB->get_record('user', array('username'=>$username, 'mnethostid'=>$CFG->mnet_localhost_id))) {
if ($user = $DB->get_record('user', array('username'=>$username, 'mnethostid'=>$CFG->mnet_localhost_id, 'auth'=>$this->authtype))) {
return validate_internal_user_password($user, $password);
}
} else {
@@ -191,8 +191,16 @@ class auth_plugin_db extends auth_plugin_base {
* @return bool True on success
*/
function user_update_password($user, $newpassword) {
global $DB;
if ($this->is_internal()) {
return update_internal_user_password($user, $newpassword);
$puser = $DB->get_record('user', array('id'=>$user->id), '*', MUST_EXIST);
if (update_internal_user_password($puser, $newpassword)) {
$user->password = $puser->password;
return true;
} else {
return false;
}
} else {
// we should have never been called!
return false;
@@ -346,7 +354,7 @@ class auth_plugin_db extends auth_plugin_base {
if ($verbose) {
mtrace(get_string('auth_dbuserstoadd','auth_db',count($add_users)));
}
$transaction = $DB->start_delegated_transaction();
// Do not use transactions around this foreach, we want to skip problematic users, not revert everything.
foreach($add_users as $user) {
$username = $user;
$user = $this->get_userinfo_asobj($user);
@@ -372,9 +380,16 @@ class auth_plugin_db extends auth_plugin_base {
} else {
$user->timecreated = time();
$user->timemodified = $user->timecreated;
$id = $DB->insert_record ('user', $user); // it is truly a new user
if ($verbose) {
mtrace("\t".get_string('auth_dbinsertuser', 'auth_db', array('name'=>$user->username, 'id'=>$id)));
try {
$id = $DB->insert_record('user', $user); // it is truly a new user
if ($verbose) {
mtrace("\t".get_string('auth_dbinsertuser', 'auth_db', array('name'=>$user->username, 'id'=>$id)));
}
} catch (moodle_exception $e) {
if ($verbose) {
mtrace("\t".get_string('auth_dbinsertusererror', 'auth_db', $user->username));
}
continue;
}
// if relevant, tag for password generation
if ($this->is_internal()) {
@@ -383,7 +398,6 @@ class auth_plugin_db extends auth_plugin_base {
}
}
}
$transaction->allow_commit();
unset($add_users); // free mem
}
return 0;
+1 -1
View File
@@ -691,7 +691,7 @@ class auth_plugin_ldap extends auth_plugin_base {
/// User removal
// Find users in DB that aren't in ldap -- to be removed!
// this is still not as scalable (but how often do we mass delete?)
if ($this->config->removeuser !== AUTH_REMOVEUSER_KEEP) {
if ($this->config->removeuser != AUTH_REMOVEUSER_KEEP) {
$sql = 'SELECT u.*
FROM {user} u
LEFT JOIN {tmp_extuser} e ON (u.username = e.username AND u.mnethostid = e.mnethostid)
+7 -6
View File
@@ -25,7 +25,7 @@
// Check whether Shibboleth is configured properly
if (empty($pluginconfig->user_attribute)) {
print_error('shib_not_set_up_error', 'auth');
print_error('shib_not_set_up_error', 'auth_shibboleth');
}
/// If we can find the Shibboleth attribute, save it in session and return to main login page
@@ -37,9 +37,9 @@
/// Check if the user has actually submitted login data to us
if ($shibbolethauth->user_login($frm->username, $frm->password)) {
if ($shibbolethauth->user_login($frm->username, $frm->password)
&& $user = authenticate_user_login($frm->username, $frm->password)) {
$user = authenticate_user_login($frm->username, $frm->password);
enrol_check_plugins($user);
session_set_user($user);
@@ -83,16 +83,17 @@
}
else {
// For some weird reason the Shibboleth user couldn't be authenticated
// The Shibboleth user couldn't be mapped to a valid Moodle user
print_error('shib_invalid_account_error', 'auth_shibboleth');
}
}
// If we can find any (user independent) Shibboleth attributes but no user
// attributes we probably didn't receive any user attributes
elseif (!empty($_SERVER['HTTP_SHIB_APPLICATION_ID']) || !empty($_SERVER['Shib-Application-ID'])) {
print_error('shib_no_attributes_error', 'auth' , '', '\''.$pluginconfig->user_attribute.'\', \''.$pluginconfig->field_map_firstname.'\', \''.$pluginconfig->field_map_lastname.'\' and \''.$pluginconfig->field_map_email.'\'');
print_error('shib_no_attributes_error', 'auth_shibboleth' , '', '\''.$pluginconfig->user_attribute.'\', \''.$pluginconfig->field_map_firstname.'\', \''.$pluginconfig->field_map_lastname.'\' and \''.$pluginconfig->field_map_email.'\'');
} else {
print_error('shib_not_set_up_error', 'auth');
print_error('shib_not_set_up_error', 'auth_shibboleth');
}
@@ -51,6 +51,7 @@ $string['auth_shib_no_organizations_warning'] = 'If you want to use the integrat
$string['auth_shib_only'] = 'Shibboleth only';
$string['auth_shib_only_description'] = 'Check this option if a Shibboleth authentication shall be enforced';
$string['auth_shib_username_description'] = 'Name of the webserver Shibboleth environment variable that shall be used as Moodle username';
$string['shib_invalid_account_error'] = 'You seem to be Shibboleth authenticated but Moodle has no valid account for your username. Your account may not exist or it may have been suspended.';
$string['shib_no_attributes_error'] = 'You seem to be Shibboleth authenticated but Moodle didn\'t receive any user attributes. Please check that your Identity Provider releases the necessary attributes ({$a}) to the Service Provider Moodle is running on or inform the webmaster of this server.';
$string['shib_not_all_attributes_error'] = 'Moodle needs certain Shibboleth attributes which are not present in your case. The attributes are: {$a}<br />Please contact the webmaster of this server or your Identity Provider.';
$string['shib_not_set_up_error'] = 'Shibboleth authentication doesn\'t seem to be set up correctly because no Shibboleth environment variables are present for this page. Please consult the <a href="README.txt">README</a> for further instructions on how to set up Shibboleth authentication or contact the webmaster of this Moodle installation.';
+1 -1
View File
@@ -98,7 +98,7 @@ $PAGE->navbar->add($backup->get_stage_name());
$renderer = $PAGE->get_renderer('core','backup');
echo $OUTPUT->header();
if ($backup->enforce_changed_dependencies()) {
echo $renderer->dependency_notification(get_string('dependenciesenforced','backup'));
debugging('Your settings have been altered due to unmet dependencies', DEBUG_DEVELOPER);
}
echo $renderer->progress_bar($backup->get_progress_bar());
echo $backup->display();
+1 -1
View File
@@ -33,7 +33,7 @@ $currentcontext = required_param('currentcontext', PARAM_INT);
// file parameters
$component = optional_param('component', null, PARAM_COMPONENT);
$filearea = optional_param('filearea', null, PARAM_AREA);
$returnurl = optional_param('returnurl', null, PARAM_URL);
$returnurl = optional_param('returnurl', null, PARAM_LOCALURL);
list($context, $course, $cm) = get_context_info_array($currentcontext);
$filecontext = get_context_instance_by_id($contextid);
+22 -3
View File
@@ -640,7 +640,10 @@ class moodle1_converter extends base_converter {
return $files;
}
foreach ($matches[2] as $match) {
$files[] = str_replace(array('$@FILEPHP@$', '$@SLASH@$', '$@FORCEDOWNLOAD@$'), array('', '/', ''), $match);
$file = str_replace(array('$@FILEPHP@$', '$@SLASH@$', '$@FORCEDOWNLOAD@$'), array('', '/', ''), $match);
if ($file === clean_param($file, PARAM_PATH)) {
$files[] = rawurldecode($file);
}
}
return array_unique($files);
@@ -657,9 +660,16 @@ class moodle1_converter extends base_converter {
public static function rewrite_filephp_usage($text, array $files) {
foreach ($files as $file) {
// Expect URLs properly encoded by default.
$parts = explode('/', $file);
$encoded = implode('/', array_map('rawurlencode', $parts));
$fileref = '$@FILEPHP@$'.str_replace('/', '$@SLASH@$', $encoded);
$text = str_replace($fileref.'$@FORCEDOWNLOAD@$', '@@PLUGINFILE@@'.$encoded.'?forcedownload=1', $text);
$text = str_replace($fileref, '@@PLUGINFILE@@'.$encoded, $text);
// Add support for URLs without any encoding.
$fileref = '$@FILEPHP@$'.str_replace('/', '$@SLASH@$', $file);
$text = str_replace($fileref.'$@FORCEDOWNLOAD@$', '@@PLUGINFILE@@'.$file.'?forcedownload=1', $text);
$text = str_replace($fileref, '@@PLUGINFILE@@'.$file, $text);
$text = str_replace($fileref.'$@FORCEDOWNLOAD@$', '@@PLUGINFILE@@'.$encoded.'?forcedownload=1', $text);
$text = str_replace($fileref, '@@PLUGINFILE@@'.$encoded, $text);
}
return $text;
@@ -1205,6 +1215,10 @@ class moodle1_file_manager implements loggable {
$sourcefullpath = $this->basepath.'/'.$sourcepath;
if ($sourcefullpath !== clean_param($sourcefullpath, PARAM_PATH)) {
throw new moodle1_convert_exception('file_invalid_path', $sourcefullpath);
}
if (!is_readable($sourcefullpath)) {
throw new moodle1_convert_exception('file_not_readable', $sourcefullpath);
}
@@ -1264,6 +1278,11 @@ class moodle1_file_manager implements loggable {
*/
public function migrate_directory($rootpath, $relpath='/') {
// Check the trailing slash in the $rootpath
if (substr($rootpath, -1) === '/') {
$rootpath = substr($rootpath, 0, strlen($rootpath) - 1);
}
if (!file_exists($this->basepath.'/'.$rootpath.$relpath)) {
return array();
}
@@ -253,13 +253,15 @@ class moodle1_converter_test extends UnitTestCase {
$fileids = $fileman->get_fileids();
$this->assertIsA($fileids, 'array');
$this->assertEqual(0, count($fileids));
// try to migrate a non-existing directory
$returned = $fileman->migrate_directory('not/existing/directory');
$this->assertIsA($returned, 'array');
$this->assertEqual(0, count($returned));
$fileids = $fileman->get_fileids();
$this->assertIsA($fileids, 'array');
$this->assertEqual(0, count($fileids));
// try to migrate an invalid file
$fileman->itemid = 1;
$thrown = false;
try {
$fileman->migrate_file('/../../../../../../../../../../../../../../etc/passwd');
} catch (moodle1_convert_exception $e) {
$thrown = true;
}
$this->assertTrue($thrown);
// migrate a single file
$fileman->itemid = 4;
$fileman->migrate_file('moddata/unittest/4/icon.gif');
@@ -291,6 +293,63 @@ class moodle1_converter_test extends UnitTestCase {
$converter->drop_stash_storage();
}
public function test_migrate_directory() {
// Set-up the file manager.
$converter = convert_factory::get_converter('moodle1', $this->tempdir);
$converter->create_stash_storage();
$contextid = $converter->get_contextid(CONTEXT_MODULE, 32);
$fileman = $converter->get_file_manager($contextid, 'mod_unittest', 'testarea');
// This fileman has not converted anything yet.
$fileids = $fileman->get_fileids();
$this->assertIsA($fileids, 'array');
$this->assertEqual(0, count($fileids));
// Try to migrate a non-existing directory.
$returned = $fileman->migrate_directory('not/existing/directory');
$this->assertIsA($returned, 'array');
$this->assertEqual(0, count($returned));
$fileids = $fileman->get_fileids();
$this->assertIsA($fileids, 'array');
$this->assertEqual(0, count($fileids));
// Try to migrate whole course_files.
$returned = $fileman->migrate_directory('course_files');
$this->assertIsA($returned, 'array');
$this->assertEqual(4, count($returned)); // Two files, two directories.
$fileids = $fileman->get_fileids();
$this->assertIsA($fileids, 'array');
$this->assertEqual(4, count($fileids));
$this->assertTrue(is_file($converter->get_workdir_path().'/files/4e/4ea114b0558f53e3af8dd9afc0e0810a95c2a724'));
// Check the file records.
$files = array();
$filerecordids = $converter->get_stash_itemids('files');
foreach ($filerecordids as $filerecordid) {
$filerecord = $converter->get_stash('files', $filerecordid);
$files[$filerecord['filepath'].$filerecord['filename']] = $filerecord;
}
$this->assertIsA($files['/.'], 'array');
$this->assertIsA($files['/file1.gif'], 'array');
$this->assertIsA($files['/sub1/.'], 'array');
$this->assertIsA($files['/sub1/file2.gif'], 'array');
$this->assertEqual(sha1(''), $files['/.']['contenthash']);
$this->assertEqual(sha1(''), $files['/sub1/.']['contenthash']);
$this->assertEqual('4ea114b0558f53e3af8dd9afc0e0810a95c2a724', $files['/file1.gif']['contenthash']);
$this->assertEqual('4ea114b0558f53e3af8dd9afc0e0810a95c2a724', $files['/sub1/file2.gif']['contenthash']);
$converter->drop_stash_storage();
}
public function test_migrate_directory_with_trailing_slash() {
// Set-up the file manager.
$converter = convert_factory::get_converter('moodle1', $this->tempdir);
$converter->create_stash_storage();
$contextid = $converter->get_contextid(CONTEXT_MODULE, 32);
$fileman = $converter->get_file_manager($contextid, 'mod_unittest', 'testarea');
// Try to migrate a subdirectory passed with the trailing slash.
// This may display a debugging message which is expected.
$returned = $fileman->migrate_directory('course_files/sub1/');
$this->assertIsA($returned, 'array');
$this->assertEqual(2, count($returned)); // One file, one directory.
$converter->drop_stash_storage();
}
public function test_convert_path() {
$path = new convert_path('foo_bar', '/ROOT/THINGS/FOO/BAR');
$this->assertEqual('foo_bar', $path->get_name());
@@ -421,6 +480,8 @@ class moodle1_converter_test extends UnitTestCase {
$text = 'This is a text containing links to file.php
as it is parsed from the backup file. <br /><br /><img border="0" width="110" vspace="0" hspace="0" height="92" title="News" alt="News" src="$@FILEPHP@$$@SLASH@$pics$@SLASH@$news.gif" /><a href="$@FILEPHP@$$@SLASH@$pics$@SLASH@$news.gif$@FORCEDOWNLOAD@$">download image</a><br />
<div><a href=\'$@FILEPHP@$/../../../../../../../../../../../../../../../etc/passwd\'>download passwords</a></div>
<div><a href=\'$@FILEPHP@$$@SLASH@$..$@SLASH@$..$@SLASH@$..$@SLASH@$..$@SLASH@$..$@SLASH@$..$@SLASH@$..$@SLASH@$..$@SLASH@$..$@SLASH@$..$@SLASH@$..$@SLASH@$..$@SLASH@$..$@SLASH@$..$@SLASH@$..$@SLASH@$etc$@SLASH@$shadow\'>download shadows</a></div>
<br /><a href=\'$@FILEPHP@$$@SLASH@$MANUAL.DOC$@FORCEDOWNLOAD@$\'>download manual</a><br />';
$files = moodle1_converter::find_referenced_files($text);
@@ -429,12 +490,41 @@ as it is parsed from the backup file. <br /><br /><img border="0" width="110" vs
$this->assertTrue(in_array('/pics/news.gif', $files));
$this->assertTrue(in_array('/MANUAL.DOC', $files));
$text = moodle1_converter::rewrite_filephp_usage($text, array('/pics/news.gif', '/another/file/notused.txt'), $files);
$text = moodle1_converter::rewrite_filephp_usage($text, array('/pics/news.gif', '/another/file/notused.txt'));
$this->assertEqual($text, 'This is a text containing links to file.php
as it is parsed from the backup file. <br /><br /><img border="0" width="110" vspace="0" hspace="0" height="92" title="News" alt="News" src="@@PLUGINFILE@@/pics/news.gif" /><a href="@@PLUGINFILE@@/pics/news.gif?forcedownload=1">download image</a><br />
<div><a href=\'$@FILEPHP@$/../../../../../../../../../../../../../../../etc/passwd\'>download passwords</a></div>
<div><a href=\'$@FILEPHP@$$@SLASH@$..$@SLASH@$..$@SLASH@$..$@SLASH@$..$@SLASH@$..$@SLASH@$..$@SLASH@$..$@SLASH@$..$@SLASH@$..$@SLASH@$..$@SLASH@$..$@SLASH@$..$@SLASH@$..$@SLASH@$..$@SLASH@$..$@SLASH@$etc$@SLASH@$shadow\'>download shadows</a></div>
<br /><a href=\'$@FILEPHP@$$@SLASH@$MANUAL.DOC$@FORCEDOWNLOAD@$\'>download manual</a><br />');
}
public function test_referenced_files_urlencoded() {
$text = 'This is a text containing links to file.php
as it is parsed from the backup file. <br /><br /><img border="0" width="110" vspace="0" hspace="0" height="92" title="News" alt="News" src="$@FILEPHP@$$@SLASH@$pics$@SLASH@$news.gif" /><a href="$@FILEPHP@$$@SLASH@$pics$@SLASH@$news.gif$@FORCEDOWNLOAD@$">no space</a><br />
<br /><a href=\'$@FILEPHP@$$@SLASH@$pics$@SLASH@$news%20with%20spaces.gif$@FORCEDOWNLOAD@$\'>with urlencoded spaces</a><br />
<a href="$@FILEPHP@$$@SLASH@$illegal%20pics%2Bmovies$@SLASH@$romeo%2Bjuliet.avi">Download the full AVI for free! (space and plus encoded)</a>
<a href="$@FILEPHP@$$@SLASH@$illegal pics+movies$@SLASH@$romeo+juliet.avi">Download the full AVI for free! (none encoded)</a>
<a href="$@FILEPHP@$$@SLASH@$illegal%20pics+movies$@SLASH@$romeo+juliet.avi">Download the full AVI for free! (only space encoded)</a>
<a href="$@FILEPHP@$$@SLASH@$illegal pics%2Bmovies$@SLASH@$romeo%2Bjuliet.avi">Download the full AVI for free! (only plus)</a>';
$files = moodle1_converter::find_referenced_files($text);
$this->assertIsA($files, 'array');
$this->assertEqual(3, count($files));
$this->assertTrue(in_array('/pics/news.gif', $files));
$this->assertTrue(in_array('/pics/news with spaces.gif', $files));
$this->assertTrue(in_array('/illegal pics+movies/romeo+juliet.avi', $files));
$text = moodle1_converter::rewrite_filephp_usage($text, $files);
$this->assertEqual('This is a text containing links to file.php
as it is parsed from the backup file. <br /><br /><img border="0" width="110" vspace="0" hspace="0" height="92" title="News" alt="News" src="@@PLUGINFILE@@/pics/news.gif" /><a href="@@PLUGINFILE@@/pics/news.gif?forcedownload=1">no space</a><br />
<br /><a href=\'@@PLUGINFILE@@/pics/news%20with%20spaces.gif?forcedownload=1\'>with urlencoded spaces</a><br />
<a href="@@PLUGINFILE@@/illegal%20pics%2Bmovies/romeo%2Bjuliet.avi">Download the full AVI for free! (space and plus encoded)</a>
<a href="@@PLUGINFILE@@/illegal%20pics%2Bmovies/romeo%2Bjuliet.avi">Download the full AVI for free! (none encoded)</a>
<a href="$@FILEPHP@$$@SLASH@$illegal%20pics+movies$@SLASH@$romeo+juliet.avi">Download the full AVI for free! (only space encoded)</a>
<a href="$@FILEPHP@$$@SLASH@$illegal pics%2Bmovies$@SLASH@$romeo%2Bjuliet.avi">Download the full AVI for free! (only plus)</a>', $text);
}
public function test_question_bank_conversion() {
global $CFG;
+1 -1
View File
@@ -154,7 +154,7 @@ $PAGE->navbar->add($backup->get_stage_name());
// Display the current stage
echo $OUTPUT->header();
if ($backup->enforce_changed_dependencies()) {
echo $renderer->dependency_notification(get_string('dependenciesenforced','backup'));
debugging('Your settings have been altered due to unmet dependencies', DEBUG_DEVELOPER);
}
echo $renderer->progress_bar($backup->get_progress_bar());
echo $backup->display();
+1 -1
View File
@@ -857,7 +857,7 @@ class backup_gradebook_structure_step extends backup_structure_step {
$grade_category = new backup_nested_element('grade_category', array('id'), array(
//'courseid',
'parent', 'depth', 'path', 'fullname', 'aggregation', 'keephigh',
'dropload', 'aggregateonlygraded', 'aggregateoutcomes', 'aggregatesubcats',
'droplow', 'aggregateonlygraded', 'aggregateoutcomes', 'aggregatesubcats',
'timecreated', 'timemodified', 'hidden'));
$letters = new backup_nested_element('grade_letters');
@@ -149,6 +149,22 @@ abstract class restore_qtype_plugin extends restore_plugin {
AND ' . $DB->sql_compare_text('answer', 255) . ' = ' . $DB->sql_compare_text('?', 255);
$params = array($newquestionid, $data->answertext);
$newitemid = $DB->get_field_sql($sql, $params);
// Not able to find the answer, let's try cleaning the answertext
// of all the question answers in DB as slower fallback. MDL-30018.
if (!$newitemid) {
$params = array('question' => $newquestionid);
$answers = $DB->get_records('question_answers', $params, '', 'id, answer');
foreach ($answers as $answer) {
// Clean in the same way than {@link xml_writer::xml_safe_utf8()}.
$clean = preg_replace('/[\x-\x8\xb-\xc\xe-\x1f\x7f]/is','', $answer->answer); // Clean CTRL chars.
$clean = preg_replace("/\r\n|\r/", "\n", $clean); // Normalize line ending.
if ($clean === $data->answertext) {
$newitemid = $data->id;
}
}
}
// If we haven't found the newitemid, something has gone really wrong, question in DB
// is missing answers, exception
if (!$newitemid) {
+32 -5
View File
@@ -189,6 +189,15 @@ class restore_gradebook_structure_step extends restore_structure_step {
$data->id = $newitemid = $existinggradeitem->id;
$DB->update_record('grade_items', $data);
}
} else if ($data->itemtype == 'manual') {
// Manual items aren't assigned to a cm, so don't go duplicating them in the target if one exists.
$gi = array(
'itemtype' => $data->itemtype,
'courseid' => $data->courseid,
'itemname' => $data->itemname,
'categoryid' => $data->categoryid,
);
$newitemid = $DB->get_field('grade_items', 'id', $gi);
}
if (empty($newitemid)) {
@@ -287,8 +296,13 @@ class restore_gradebook_structure_step extends restore_structure_step {
$data->courseid = $this->get_courseid();
$newitemid = $DB->insert_record('grade_settings', $data);
//$this->set_mapping('grade_setting', $oldid, $newitemid);
if (!$DB->record_exists('grade_settings', array('courseid' => $data->courseid, 'name' => $data->name))) {
$newitemid = $DB->insert_record('grade_settings', $data);
} else {
$newitemid = $data->id;
}
$this->set_mapping('grade_setting', $oldid, $newitemid);
}
/**
@@ -2765,9 +2779,6 @@ class restore_create_categories_and_questions extends restore_structure_step {
$data->penalty = 1;
}
$data->timecreated = $this->apply_date_offset($data->timecreated);
$data->timemodified = $this->apply_date_offset($data->timemodified);
$userid = $this->get_mappingid('user', $data->createdby);
$data->createdby = $userid ? $userid : $this->task->get_userid();
@@ -2821,6 +2832,22 @@ class restore_create_categories_and_questions extends restore_structure_step {
AND ' . $DB->sql_compare_text('hint', 255) . ' = ' . $DB->sql_compare_text('?', 255);
$params = array($newquestionid, $data->hint);
$newitemid = $DB->get_field_sql($sql, $params);
// Not able to find the hint, let's try cleaning the hint text
// of all the question's hints in DB as slower fallback. MDL-33863.
if (!$newitemid) {
$potentialhints = $DB->get_records('question_hints',
array('questionid' => $newquestionid), '', 'id, hint');
foreach ($potentialhints as $potentialhint) {
// Clean in the same way than {@link xml_writer::xml_safe_utf8()}.
$cleanhint = preg_replace('/[\x-\x8\xb-\xc\xe-\x1f\x7f]/is','', $potentialhint->hint); // Clean CTRL chars.
$cleanhint = preg_replace("/\r\n|\r/", "\n", $cleanhint); // Normalize line ending.
if ($cleanhint === $data->hint) {
$newitemid = $data->id;
}
}
}
// If we haven't found the newitemid, something has gone really wrong, question in DB
// is missing hints, exception
if (!$newitemid) {
+1 -1
View File
@@ -61,7 +61,7 @@ $PAGE->navbar->add($restore->get_stage_name());
$renderer = $PAGE->get_renderer('core','backup');
echo $OUTPUT->header();
if (!$restore->is_independent() && $restore->enforce_changed_dependencies()) {
echo $renderer->dependency_notification(get_string('dependenciesenforced','backup'));
debugging('Your settings have been altered due to unmet dependencies', DEBUG_DEVELOPER);
}
echo $renderer->progress_bar($restore->get_progress_bar());
echo $restore->display($renderer);
+2 -1
View File
@@ -1302,7 +1302,8 @@ abstract class restore_dbops {
}
$currentfullname = $fullname.$suffixfull;
$currentshortname = substr($shortname, 0, 100 - strlen($suffixshort)).$suffixshort; // < 100cc
$coursefull = $DB->get_record_select('course', 'fullname = ? AND id != ?', array($currentfullname, $courseid));
$coursefull = $DB->get_record_select('course', 'fullname = ? AND id != ?',
array($currentfullname, $courseid), '*', IGNORE_MULTIPLE);
$courseshort = $DB->get_record_select('course', 'shortname = ? AND id != ?', array($currentshortname, $courseid));
$counter++;
} while ($coursefull || $courseshort);
+1 -1
View File
@@ -75,7 +75,7 @@ class file_logger extends base_logger {
if (substr($this->fullpath, -5) !== '.html') {
$content = $prefix . str_repeat(' ', $depth) . $message . PHP_EOL;
} else {
$content = $prefix . str_repeat('&nbsp;&nbsp;', $depth) . htmlentities($message, ENT_QUOTES) . '<br/>' . PHP_EOL;
$content = $prefix . str_repeat('&nbsp;&nbsp;', $depth) . htmlentities($message, ENT_QUOTES, 'UTF-8') . '<br/>' . PHP_EOL;
}
if (false === fwrite($this->fhandle, $content)) {
throw new base_logger_exception('error_writing_file', $this->fullpath);
@@ -38,7 +38,7 @@ class output_indented_logger extends base_logger {
if (defined('STDOUT')) {
echo $prefix . str_repeat(' ', $depth) . $message . PHP_EOL;
} else {
echo $prefix . str_repeat('&nbsp;&nbsp;', $depth) . htmlentities($message, ENT_QUOTES) . '<br/>' . PHP_EOL;
echo $prefix . str_repeat('&nbsp;&nbsp;', $depth) . htmlentities($message, ENT_QUOTES, 'UTF-8') . '<br/>' . PHP_EOL;
}
flush();
return true;
@@ -37,7 +37,7 @@ class output_text_logger extends base_logger {
if (defined('STDOUT')) {
echo $prefix . $message . PHP_EOL;
} else {
echo $prefix . htmlentities($message, ENT_QUOTES) . '<br/>' . PHP_EOL;
echo $prefix . htmlentities($message, ENT_QUOTES, 'UTF-8') . '<br/>' . PHP_EOL;
}
flush();
return true;
+1 -1
View File
@@ -69,7 +69,7 @@ class block_community extends block_list {
}
$icon = html_writer::empty_tag('img', array('src' => $OUTPUT->pix_url('i/group'),
'class' => 'icon', 'alt' => get_string('addcourse', 'block_community')));
'class' => 'icon', 'alt' => ""));
$addcourseurl = new moodle_url('/blocks/community/communitycourse.php',
array('add' => true, 'courseid' => $this->page->course->id));
$searchlink = html_writer::tag('a', $icon . '&nbsp;' . get_string('addcourse', 'block_community'),
+1 -1
View File
@@ -140,7 +140,7 @@ class community_hub_search_form extends moodleform {
$options = array();
$firsthub = false;
foreach ($hubs as $hub) {
if (key_exists('id', $hub)) {
if (array_key_exists('id', $hub)) {
$params = array('hubid' => $hub['id'],
'filetype' => HUB_HUBSCREENSHOT_FILE_TYPE);
$imgurl = new moodle_url(HUB_HUBDIRECTORYURL .
+2 -1
View File
@@ -213,6 +213,7 @@
background-color:#F6F6F6;
border:1px solid #CCCCCC;
overflow: auto;
padding: 7px 6px;
}
#page-blocks-community-communitycourse .moodle-dialogue-base .moodle-dialogue-bd {
@@ -222,5 +223,5 @@
#page-blocks-community-communitycourse .moodle-dialogue-base .closebutton {
margin-top:4px;
width:30px;
margin-right:4px;
}
+20 -20
View File
@@ -9,8 +9,8 @@ YUI.add('moodle-block_community-comments', function(Y) {
Y.extend(COMMENTS, Y.Base, {
event:null,
overlayevent:null,
overlays: [], //all the comment boxes
panelevent:null,
panels: [], //all the comment boxes
initializer : function(params) {
@@ -18,18 +18,18 @@ YUI.add('moodle-block_community-comments', function(Y) {
for (var i=0;i<this.get('commentids').length;i++)
{
var commentid = this.get('commentids')[i];
this.overlays[commentid] = new M.core.dialogue({
headerContent:Y.one('#commentoverlay-'+commentid+' .commenttitle').get('innerHTML'),
this.panels[commentid] = new M.core.dialogue({
headerContent:Y.Node.create('<h1>')
.append(Y.one('#commentoverlay-'+commentid+' .commenttitle').get('innerHTML')),
bodyContent:Y.one('#commentoverlay-'+commentid).get('innerHTML'),
visible: false, //by default it is not displayed
lightbox : false,
zIndex:100,
height: '350px'
zIndex:100
});
this.overlays[commentid].get('contentBox').one('.commenttitle').remove();
this.overlays[commentid].render();
this.overlays[commentid].hide();
this.panels[commentid].get('contentBox').one('.commenttitle').remove();
this.panels[commentid].render();
this.panels[commentid].hide();
Y.one('#comments-'+commentid).on('click', this.show, this, commentid);
}
@@ -38,34 +38,34 @@ YUI.add('moodle-block_community-comments', function(Y) {
show : function (e, commentid) {
//hide all overlays
//hide all panels
for (var i=0;i<this.get('commentids').length;i++)
{
this.hide(e, this.get('commentids')[i]);
}
this.overlays[commentid].show(); //show the overlay
this.panels[commentid].show(); //show the panel
e.halt(); // we are going to attach a new 'hide overlay' event to the body,
e.halt(); // we are going to attach a new 'hide panel' event to the body,
// because javascript always propagate event to parent tag,
// we need to tell Yahoo to stop to call the event on parent tag
// otherwise the hide event will be call right away.
//we add a new event on the body in order to hide the overlay for the next click
//we add a new event on the body in order to hide the panel for the next click
this.event = Y.one(document.body).on('click', this.hide, this, commentid);
//we add a new event on the overlay in order to hide the overlay for the next click (touch device)
this.overlayevent = Y.one("#commentoverlay-"+commentid).on('click', this.hide, this, commentid);
//we add a new event on the panel in order to hide the panel for the next click (touch device)
this.panelevent = Y.one("#commentoverlay-"+commentid).on('click', this.hide, this, commentid);
},
hide : function (e, commentid) {
this.overlays[commentid].hide(); //hide the overlay
this.panels[commentid].hide(); //hide the panel
if (this.event != null) {
this.event.detach(); //we need to detach the body hide event
//Note: it would work without but create js warning everytime
//we click on the body
}
if (this.overlayevent != null) {
this.overlayevent.detach(); //we need to detach the overlay hide event
if (this.panelevent != null) {
this.panelevent.detach(); //we need to detach the panel hide event
//Note: it would work without but create js warning everytime
//we click on the body
}
@@ -85,5 +85,5 @@ YUI.add('moodle-block_community-comments', function(Y) {
}
}, '@VERSION@', {
requires:['base','overlay', 'moodle-enrol-notification']
});
requires:['base', 'moodle-enrol-notification']
});
+38 -38
View File
@@ -11,8 +11,8 @@ YUI.add('moodle-block_community-imagegallery', function(Y) {
event:null,
previousevent:null,
nextevent:null,
overlayevent:null,
overlay:null, //all the comment boxes
panelevent:null,
panel:null, //all the images boxes
imageidnumbers: [],
imageloadingevent: null,
loadingimage: null,
@@ -26,15 +26,15 @@ YUI.add('moodle-block_community-imagegallery', function(Y) {
+'</div>');
objBody.append(this.loadingimage);
/// create the div for overlay
/// create the div for panel
var objBody = Y.one(document.body);
var overlaytitle = Y.Node.create('<div id="imagetitleoverlay" class="hiddenoverlay"></div>');
objBody.append(overlaytitle);
var overlay = Y.Node.create('<div id="imageoverlay" class="hiddenoverlay"></div>');
objBody.append(overlay);
var paneltitle = Y.Node.create('<div id="imagetitleoverlay" class="hiddenoverlay"></div>');
objBody.append(paneltitle);
var panel = Y.Node.create('<div id="imageoverlay" class="hiddenoverlay"></div>');
objBody.append(panel);
/// create the overlay
this.overlay = new M.core.dialogue({
/// create the panel
this.panel = new M.core.dialogue({
headerContent:Y.one('#imagetitleoverlay').get('innerHTML'),
bodyContent:Y.one('#imageoverlay').get('innerHTML'),
visible: false, //by default it is not displayed
@@ -42,8 +42,8 @@ YUI.add('moodle-block_community-imagegallery', function(Y) {
zIndex:100
});
this.overlay.render();
this.overlay.hide();
this.panel.render();
this.panel.hide();
//attach a show event on the image divs (<tag id='image-X'>)
for (var i=0;i<this.get('imageids').length;i++)
@@ -85,31 +85,31 @@ YUI.add('moodle-block_community-imagegallery', function(Y) {
var maxheight = windowheight - 150;
//load the title + link to next image
var overlaytitle = Y.one('#imagetitleoverlay');
var paneltitle = Y.one('#imagetitleoverlay');
var previousimagelink = "<div id=\"previousarrow\" class=\"imagearrow\">←</div>";
var nextimagelink = "<div id=\"nextarrow\" class=\"imagearrow\">→</div>";
/// need to load the images in the overlay
var overlay = Y.one('#imageoverlay');
overlay.setContent('');
/// need to load the images in the panel
var panel = Y.one('#imageoverlay');
panel.setContent('');
overlay.append(Y.Node.create('<div style="text-align:center"><img id=\"imagetodisplay\" src="' + url
panel.append(Y.Node.create('<div style="text-align:center"><img id=\"imagetodisplay\" src="' + url
+ '" style="max-height:' + maxheight + 'px;"></div>'));
this.overlay.destroy();
this.overlay = new M.core.dialogue({
headerContent:previousimagelink + '<div id=\"imagenumber\" class=\"imagetitle\"> Image '
+ screennumber + ' / ' + this.imageidnumbers[imageid] + ' </div>' + nextimagelink,
this.panel.destroy();
this.panel = new M.core.dialogue({
headerContent:previousimagelink + '<div id=\"imagenumber\" class=\"imagetitle\"><h1> Image '
+ screennumber + ' / ' + this.imageidnumbers[imageid] + ' </h1></div>' + nextimagelink,
bodyContent:Y.one('#imageoverlay').get('innerHTML'),
visible: false, //by default it is not displayed
lightbox : false,
zIndex:100
});
this.overlay.render();
this.overlay.hide(); //show the overlay
this.overlay.set("centered", true);
this.panel.render();
this.panel.hide(); //show the panel
this.panel.set("centered", true);
e.halt(); // we are going to attach a new 'hide overlay' event to the body,
e.halt(); // we are going to attach a new 'hide panel' event to the body,
// because javascript always propagate event to parent tag,
// we need to tell Yahoo to stop to call the event on parent tag
// otherwise the hide event will be call right away.
@@ -123,14 +123,14 @@ YUI.add('moodle-block_community-imagegallery', function(Y) {
var screenshot = new Image();
screenshot.src = url;
var overlaywidth = windowwidth - 100;
if(overlaywidth > screenshot.width) {
overlaywidth = screenshot.width;
var panelwidth = windowwidth - 100;
if(panelwidth > screenshot.width) {
panelwidth = screenshot.width;
}
this.overlay.set('width', overlaywidth);
this.overlay.set("centered", true);
this.overlay.show();
this.panel.set('width', panelwidth);
this.panel.set("centered", true);
this.panel.show();
}, this, url);
@@ -147,12 +147,12 @@ YUI.add('moodle-block_community-imagegallery', function(Y) {
Y.one('#nextarrow').on('click', this.show, this, imageid, nextnumber);
Y.one('#imagenumber').on('click', this.show, this, imageid, nextnumber);
//we add a new event on the body in order to hide the overlay for the next click
//we add a new event on the body in order to hide the panel for the next click
this.event = Y.one(document.body).on('click', this.hide, this);
//we add a new event on the overlay in order to hide the overlay for the next click (touch device)
this.overlayevent = Y.one("#imageoverlay").on('click', this.hide, this);
//we add a new event on the panel in order to hide the panel for the next click (touch device)
this.panelevent = Y.one("#imageoverlay").on('click', this.hide, this);
this.overlay.on('visibleChange',function(e){
this.panel.on('visibleChange',function(e){
if(e.newVal == 0){
this.get('maskNode').remove()
}
@@ -167,14 +167,14 @@ YUI.add('moodle-block_community-imagegallery', function(Y) {
//hide the loading image
Y.one('#hubloadingimage').setStyle('display', 'none');
this.overlay.hide(); //hide the overlay
this.panel.hide(); //hide the panel
if (this.event != null) {
this.event.detach(); //we need to detach the body hide event
//Note: it would work without but create js warning everytime
//we click on the body
}
if (this.overlayevent != null) {
this.overlayevent.detach(); //we need to detach the overlay hide event
if (this.panelevent != null) {
this.panelevent.detach(); //we need to detach the panel hide event
//Note: it would work without but create js warning everytime
//we click on the body
}
@@ -195,5 +195,5 @@ YUI.add('moodle-block_community-imagegallery', function(Y) {
}
}, '@VERSION@', {
requires:['base','node','overlay', 'moodle-enrol-notification']
requires:['base','node', 'moodle-enrol-notification']
});
+136 -137
View File
@@ -51,8 +51,10 @@ class block_completionstatus extends block_base {
// Create empty content
$this->content = new stdClass();
$context = get_context_instance(CONTEXT_COURSE, $course->id);
// Can edit settings?
$can_edit = has_capability('moodle/course:update', get_context_instance(CONTEXT_COURSE, $course->id));
$can_edit = has_capability('moodle/course:update', $context);
// Get course completion data
$info = new completion_info($course);
@@ -83,148 +85,145 @@ class block_completionstatus extends block_base {
}
// Check this user is enroled
if (!$info->is_tracked_user($USER->id)) {
// If not enrolled, but are can view the report:
if (has_capability('report/completion:view', get_context_instance(CONTEXT_COURSE, $course->id))) {
$report = new moodle_url('/report/completion/index.php', array('course' => $course->id));
$this->content->text = '<a href="'.$report->out().'">'.get_string('viewcoursereport', 'completion').'</a>';
return $this->content;
if ($info->is_tracked_user($USER->id)) {
// Generate markup for criteria statuses
$shtml = '';
// For aggregating activity completion
$activities = array();
$activities_complete = 0;
// For aggregating course prerequisites
$prerequisites = array();
$prerequisites_complete = 0;
// Flag to set if current completion data is inconsistent with
// what is stored in the database
$pending_update = false;
// Loop through course criteria
foreach ($completions as $completion) {
$criteria = $completion->get_criteria();
$complete = $completion->is_complete();
if (!$pending_update && $criteria->is_pending($completion)) {
$pending_update = true;
}
// Activities are a special case, so cache them and leave them till last
if ($criteria->criteriatype == COMPLETION_CRITERIA_TYPE_ACTIVITY) {
$activities[$criteria->moduleinstance] = $complete;
if ($complete) {
$activities_complete++;
}
continue;
}
// Prerequisites are also a special case, so cache them and leave them till last
if ($criteria->criteriatype == COMPLETION_CRITERIA_TYPE_COURSE) {
$prerequisites[$criteria->courseinstance] = $complete;
if ($complete) {
$prerequisites_complete++;
}
continue;
}
$shtml .= '<tr><td>';
$shtml .= $criteria->get_title();
$shtml .= '</td><td style="text-align: right">';
$shtml .= $completion->get_status();
$shtml .= '</td></tr>';
}
// Otherwise, show error
// Aggregate activities
if (!empty($activities)) {
$shtml .= '<tr><td>';
$shtml .= get_string('activitiescompleted', 'completion');
$shtml .= '</td><td style="text-align: right">';
$a = new stdClass();
$a->first = $activities_complete;
$a->second = count($activities);
$shtml .= get_string('firstofsecond', 'block_completionstatus', $a);
$shtml .= '</td></tr>';
}
// Aggregate prerequisites
if (!empty($prerequisites)) {
$phtml = '<tr><td>';
$phtml .= get_string('prerequisitescompleted', 'completion');
$phtml .= '</td><td style="text-align: right">';
$a = new stdClass();
$a->first = $prerequisites_complete;
$a->second = count($prerequisites);
$phtml .= get_string('firstofsecond', 'block_completionstatus', $a);
$phtml .= '</td></tr>';
$shtml = $phtml . $shtml;
}
// Display completion status
$this->content->text = '<table width="100%" style="font-size: 90%;"><tbody>';
$this->content->text .= '<tr><td colspan="2"><b>'.get_string('status').':</b> ';
// Is course complete?
$coursecomplete = $info->is_course_complete($USER->id);
// Load course completion
$params = array(
'userid' => $USER->id,
'course' => $course->id
);
$ccompletion = new completion_completion($params);
// Has this user completed any criteria?
$criteriacomplete = $info->count_course_user_data($USER->id);
if ($pending_update) {
$this->content->text .= '<i>'.get_string('pending', 'completion').'</i>';
} else if ($coursecomplete) {
$this->content->text .= get_string('complete');
} else if (!$criteriacomplete && !$ccompletion->timestarted) {
$this->content->text .= '<i>'.get_string('notyetstarted', 'completion').'</i>';
} else {
$this->content->text .= '<i>'.get_string('inprogress','completion').'</i>';
}
$this->content->text .= '</td></tr>';
$this->content->text .= '<tr><td colspan="2">';
// Get overall aggregation method
$overall = $info->get_aggregation_method();
if ($overall == COMPLETION_AGGREGATION_ALL) {
$this->content->text .= get_string('criteriarequiredall', 'completion');
} else {
$this->content->text .= get_string('criteriarequiredany', 'completion');
}
$this->content->text .= ':</td></tr>';
$this->content->text .= '<tr><td><b>'.get_string('requiredcriteria', 'completion').'</b></td><td style="text-align: right"><b>'.get_string('status').'</b></td></tr>';
$this->content->text .= $shtml.'</tbody></table>';
// Display link to detailed view
$details = new moodle_url('/blocks/completionstatus/details.php', array('course' => $course->id));
$this->content->footer = '<br><a href="'.$details->out().'">'.get_string('moredetails', 'completion').'</a>';
} else {
// If user is not enrolled, show error
$this->content->text = get_string('notenroled', 'completion');
return $this->content;
}
// Generate markup for criteria statuses
$shtml = '';
// For aggregating activity completion
$activities = array();
$activities_complete = 0;
// For aggregating course prerequisites
$prerequisites = array();
$prerequisites_complete = 0;
// Flag to set if current completion data is inconsistent with
// what is stored in the database
$pending_update = false;
// Loop through course criteria
foreach ($completions as $completion) {
$criteria = $completion->get_criteria();
$complete = $completion->is_complete();
if (!$pending_update && $criteria->is_pending($completion)) {
$pending_update = true;
}
// Activities are a special case, so cache them and leave them till last
if ($criteria->criteriatype == COMPLETION_CRITERIA_TYPE_ACTIVITY) {
$activities[$criteria->moduleinstance] = $complete;
if ($complete) {
$activities_complete++;
}
continue;
}
// Prerequisites are also a special case, so cache them and leave them till last
if ($criteria->criteriatype == COMPLETION_CRITERIA_TYPE_COURSE) {
$prerequisites[$criteria->courseinstance] = $complete;
if ($complete) {
$prerequisites_complete++;
}
continue;
}
$shtml .= '<tr><td>';
$shtml .= $criteria->get_title();
$shtml .= '</td><td style="text-align: right">';
$shtml .= $completion->get_status();
$shtml .= '</td></tr>';
if (has_capability('report/completion:view', $context)) {
$report = new moodle_url('/report/completion/index.php', array('course' => $course->id));
$this->content->footer .= '<br /><a href="'.$report->out().'">'.get_string('viewcoursereport', 'completion').'</a>';
}
// Aggregate activities
if (!empty($activities)) {
$shtml .= '<tr><td>';
$shtml .= get_string('activitiescompleted', 'completion');
$shtml .= '</td><td style="text-align: right">';
$a = new stdClass();
$a->first = $activities_complete;
$a->second = count($activities);
$shtml .= get_string('firstofsecond', 'block_completionstatus', $a);
$shtml .= '</td></tr>';
}
// Aggregate prerequisites
if (!empty($prerequisites)) {
$phtml = '<tr><td>';
$phtml .= get_string('prerequisitescompleted', 'completion');
$phtml .= '</td><td style="text-align: right">';
$a = new stdClass();
$a->first = $prerequisites_complete;
$a->second = count($prerequisites);
$phtml .= get_string('firstofsecond', 'block_completionstatus', $a);
$phtml .= '</td></tr>';
$shtml = $phtml . $shtml;
}
// Display completion status
$this->content->text = '<table width="100%" style="font-size: 90%;"><tbody>';
$this->content->text .= '<tr><td colspan="2"><b>'.get_string('status').':</b> ';
// Is course complete?
$coursecomplete = $info->is_course_complete($USER->id);
// Load course completion
$params = array(
'userid' => $USER->id,
'course' => $course->id
);
$ccompletion = new completion_completion($params);
// Has this user completed any criteria?
$criteriacomplete = $info->count_course_user_data($USER->id);
if ($pending_update) {
$this->content->text .= '<i>'.get_string('pending', 'completion').'</i>';
} else if ($coursecomplete) {
$this->content->text .= get_string('complete');
} else if (!$criteriacomplete && !$ccompletion->timestarted) {
$this->content->text .= '<i>'.get_string('notyetstarted', 'completion').'</i>';
} else {
$this->content->text .= '<i>'.get_string('inprogress','completion').'</i>';
}
$this->content->text .= '</td></tr>';
$this->content->text .= '<tr><td colspan="2">';
// Get overall aggregation method
$overall = $info->get_aggregation_method();
if ($overall == COMPLETION_AGGREGATION_ALL) {
$this->content->text .= get_string('criteriarequiredall', 'completion');
} else {
$this->content->text .= get_string('criteriarequiredany', 'completion');
}
$this->content->text .= ':</td></tr>';
$this->content->text .= '<tr><td><b>'.get_string('requiredcriteria', 'completion').'</b></td><td style="text-align: right"><b>'.get_string('status').'</b></td></tr>';
$this->content->text .= $shtml.'</tbody></table>';
// Display link to detailed view
$details = new moodle_url('/blocks/completionstatus/details.php', array('course' => $course->id));
$this->content->footer = '<br><a href="'.$details->out().'">'.get_string('moredetails', 'completion').'</a>';
return $this->content;
}
}
+21 -5
View File
@@ -164,7 +164,7 @@ M.core_dock.init = function(Y) {
var dock = Y.one('#dock');
if (!dock) {
// Start the construction of the dock
dock = Y.Node.create('<div id="dock" class="'+css.dock+' '+css.dock+'_'+this.cfg.position+'_'+this.cfg.orientation+'"></div>')
dock = Y.Node.create('<div id="dock" role="menubar" class="'+css.dock+' '+css.dock+'_'+this.cfg.position+'_'+this.cfg.orientation+'"></div>')
.append(Y.Node.create('<div class="'+css.buttonscontainer+'"></div>')
.append(Y.Node.create('<div class="'+css.dockeditemcontainer+'"></div>')));
this.nodes.body.append(dock);
@@ -505,7 +505,7 @@ M.core_dock.fixTitleOrientation = function(item, title, text) {
break;
}
if (Y.UA.ie > 7) {
if (Y.UA.ie == 8) {
// IE8 can flip the text via CSS but not handle SVG
title.setContent(text);
title.setAttribute('style', 'writing-mode: tb-rl; filter: flipV flipH;display:inline;');
@@ -863,6 +863,12 @@ M.core_dock.genericblock.prototype = {
return;
}
// Disable the skip anchor when docking
var skipanchor = node.previous();
if (skipanchor.hasClass('skip-block')) {
skipanchor.hide();
}
var blockclass = (function(classes){
var r = /(^|\s)(block_[a-zA-Z0-9_]+)(\s|$)/;
var m = r.exec(classes);
@@ -910,7 +916,7 @@ M.core_dock.genericblock.prototype = {
}, this);
// Add a close icon
// Must set the image src seperatly of we get an error with XML strict headers
var closeicon = Y.Node.create('<span class="hidepanelicon" tabindex="0"><img alt="" style="width:11px;height:11px;cursor:pointer;" /></span>');
var closeicon = Y.Node.create('<span class="hidepanelicon" tabindex="0"><img alt="'+M.str.block.hidepanel+'" title="'+M.str.block.hidedockpanel+'" style="width:11px;height:11px;cursor:pointer;"/></span>');
closeicon.one('img').setAttribute('src', M.util.image_url('t/dockclose', 'moodle'));
closeicon.on('forceclose|click', this.hide, this);
closeicon.on('dock:actionkey',this.hide, this, {actions:{enter:true,toggle:true}});
@@ -937,6 +943,12 @@ M.core_dock.genericblock.prototype = {
return_to_block : function(dockitem) {
var placeholder = this.Y.one('#content_placeholder_'+this.id);
// Enable the skip anchor when going back to block mode
var skipanchor = placeholder.previous();
if (skipanchor.hasClass('skip-block')) {
skipanchor.show();
}
if (this.cachedcontentnode.one('.header')) {
this.cachedcontentnode.one('.header').insert(dockitem.contents, 'after');
} else {
@@ -946,7 +958,7 @@ M.core_dock.genericblock.prototype = {
placeholder.replace(this.Y.Node.getDOMNode(this.cachedcontentnode));
this.cachedcontentnode = this.Y.one('#'+this.cachedcontentnode.get('id'));
var commands = this.cachedcontentnode.one('.title .commands');
var commands = dockitem.commands;
if (commands) {
commands.all('.hidepanelicon').remove();
commands.all('.moveto').remove();
@@ -1024,7 +1036,7 @@ M.core_dock.item.prototype = {
var Y = this.Y;
var css = M.core_dock.css;
this.nodes.docktitle = Y.Node.create('<div id="dock_item_'+this.id+'_title" class="'+css.dockedtitle+'"></div>');
this.nodes.docktitle = Y.Node.create('<div id="dock_item_'+this.id+'_title" role="menu" aria-haspopup="true" class="'+css.dockedtitle+'"></div>');
this.nodes.docktitle.append(this.title);
this.nodes.dockitem = Y.Node.create('<div id="dock_item_'+this.id+'" class="'+css.dockeditem+'" tabindex="0"></div>');
this.nodes.dockitem.on('dock:actionkey', this.toggle, this);
@@ -1053,6 +1065,8 @@ M.core_dock.item.prototype = {
this.active = true;
// Add active item class first up
this.nodes.docktitle.addClass(css.activeitem);
// Set aria-exapanded property to true.
this.nodes.docktitle.set('aria-expanded', "true");
this.fire('dockeditem:showcomplete');
M.core_dock.resize();
return true;
@@ -1069,6 +1083,8 @@ M.core_dock.item.prototype = {
this.nodes.docktitle.removeClass(css.activeitem);
// Hide the panel
M.core_dock.getPanel().hide();
// Set aria-exapanded property to false
this.nodes.docktitle.set('aria-expanded', "false");
this.fire('dockeditem:hidecomplete');
},
/**
+19 -3
View File
@@ -24,13 +24,29 @@
*/
function block_html_pluginfile($course, $birecord_or_cm, $context, $filearea, $args, $forcedownload) {
global $SCRIPT;
global $DB, $CFG;
if ($context->contextlevel != CONTEXT_BLOCK) {
send_file_not_found();
}
require_course_login($course);
// If block is in course context, then check if user has capability to access course.
if ($context->get_course_context(false)) {
require_course_login($course);
} else if ($CFG->forcelogin) {
require_login();
} else {
// Get parent context and see if user have proper permission.
$parentcontext = $context->get_parent_context();
if ($parentcontext->contextlevel === CONTEXT_COURSECAT) {
// Check if category is visible and user can view this category.
$category = $DB->get_record('course_categories', array('id' => $parentcontext->instanceid), '*', MUST_EXIST);
if (!$category->visible) {
require_capability('moodle/category:viewhiddencategories', $parentcontext);
}
}
// At this point there is no way to check SYSTEM or USER context, so ignoring it.
}
if ($filearea !== 'content') {
send_file_not_found();
@@ -79,4 +95,4 @@ function block_html_global_db_replace($search, $replace) {
}
}
$instances->close();
}
}
+3 -1
View File
@@ -74,18 +74,20 @@ class block_navigation_renderer extends plugin_renderer_base {
// this applies to the li item which contains all child lists too
$liclasses = array($item->get_css_type(), 'depth_'.$depth);
$liexpandable = array();
if ($item->has_children() && (!$item->forceopen || $item->collapse)) {
$liclasses[] = 'collapsed';
}
if ($isbranch) {
$liclasses[] = 'contains_branch';
$liexpandable = array('aria-expanded' => in_array('collapsed', $liclasses) ? "false" : "true");
} else if ($hasicon) {
$liclasses[] = 'item_with_icon';
}
if ($item->isactive === true) {
$liclasses[] = 'current_branch';
}
$liattr = array('class'=>join(' ',$liclasses));
$liattr = array('class' => join(' ',$liclasses)) + $liexpandable;
// class attribute on the div item which only contains the item content
$divclasses = array('tree_item');
if ($isbranch) {
+6
View File
@@ -162,16 +162,20 @@ TREE.prototype = {
switch (e.action) {
case 'expand' :
target.removeClass('collapsed');
target.set('aria-expanded', true);
break;
case 'collapse' :
target.addClass('collapsed');
target.set('aria-expanded', false);
break;
default :
target.toggleClass('collapsed');
target.set('aria-expanded', !target.hasClass('collapsed'));
}
e.halt();
} else {
target.toggleClass('collapsed');
target.set('aria-expanded', !target.hasClass('collapsed'));
}
}
@@ -180,6 +184,7 @@ TREE.prototype = {
target.siblings('li').each(function(){
if (this.get('id') !== target.get('id') && !this.hasClass('collapsed')) {
this.addClass('collapsed');
this.set('aria-expanded', false);
}
});
}
@@ -287,6 +292,7 @@ BRANCH.prototype = {
}
if (isbranch) {
branchli.addClass('collapsed').addClass('contains_branch');
branchli.set('aria-expanded', false);
branchp.addClass('branch');
}
+21 -10
View File
@@ -31,7 +31,8 @@ class block_online_users extends block_base {
if (isset($CFG->block_online_users_timetosee)) {
$timetoshowusers = $CFG->block_online_users_timetosee * 60;
}
$timefrom = 100 * floor((time()-$timetoshowusers) / 100); // Round to nearest 100 seconds for better query cache
$now = time();
$timefrom = 100 * floor(($now - $timetoshowusers) / 100); // Round to nearest 100 seconds for better query cache
//Calculate if we are in separate groups
$isseparategroups = ($this->page->course->groupmode == SEPARATEGROUPS
@@ -53,18 +54,23 @@ class block_online_users extends block_base {
}
$userfields = user_picture::fields('u', array('username'));
$params['now'] = $now;
$params['timefrom'] = $timefrom;
if ($this->page->course->id == SITEID or $this->page->context->contextlevel < CONTEXT_COURSE) { // Site-level
$sql = "SELECT $userfields, MAX(u.lastaccess) AS lastaccess
FROM {user} u $groupmembers
WHERE u.lastaccess > $timefrom
WHERE u.lastaccess > :timefrom
AND u.lastaccess <= :now
AND u.deleted = 0
$groupselect
GROUP BY $userfields
ORDER BY lastaccess DESC ";
$csql = "SELECT COUNT(u.id)
FROM {user} u $groupmembers
WHERE u.lastaccess > $timefrom
WHERE u.lastaccess > :timefrom
AND u.lastaccess <= :now
AND u.deleted = 0
$groupselect";
} else {
@@ -77,9 +83,11 @@ class block_online_users extends block_base {
$sql = "SELECT $userfields, MAX(ul.timeaccess) AS lastaccess
FROM {user_lastaccess} ul $groupmembers, {user} u
JOIN ($esqljoin) euj ON euj.id = u.id
WHERE ul.timeaccess > $timefrom
WHERE ul.timeaccess > :timefrom
AND u.id = ul.userid
AND ul.courseid = :courseid
AND ul.timeaccess <= :now
AND u.deleted = 0
$groupselect
GROUP BY $userfields
ORDER BY lastaccess DESC";
@@ -87,9 +95,11 @@ class block_online_users extends block_base {
$csql = "SELECT COUNT(u.id)
FROM {user_lastaccess} ul $groupmembers, {user} u
JOIN ($esqljoin) euj ON euj.id = u.id
WHERE ul.timeaccess > $timefrom
WHERE ul.timeaccess > :timefrom
AND u.id = ul.userid
AND ul.courseid = :courseid
AND ul.timeaccess <= :now
AND u.deleted = 0
$groupselect";
$params['courseid'] = $this->page->course->id;
@@ -138,15 +148,16 @@ class block_online_users extends block_base {
}
foreach ($users as $user) {
$this->content->text .= '<li class="listentry">';
$timeago = format_time(time() - $user->lastaccess); //bruno to calculate correctly on frontpage
$timeago = format_time($now - $user->lastaccess); //bruno to calculate correctly on frontpage
if (isguestuser($user)) {
$this->content->text .= '<div class="user">'.$OUTPUT->user_picture($user, array('size'=>16));
$this->content->text .= '<div class="user">'.$OUTPUT->user_picture($user, array('size'=>16, 'alttext'=>false));
$this->content->text .= get_string('guestuser').'</div>';
} else {
$this->content->text .= '<div class="user">'.$OUTPUT->user_picture($user, array('size'=>16));
$this->content->text .= '<a href="'.$CFG->wwwroot.'/user/view.php?id='.$user->id.'&amp;course='.$this->page->course->id.'" title="'.$timeago.'">'.$user->fullname.'</a></div>';
$this->content->text .= '<div class="user">';
$this->content->text .= '<a href="'.$CFG->wwwroot.'/user/view.php?id='.$user->id.'&amp;course='.$this->page->course->id.'" title="'.$timeago.'">';
$this->content->text .= $OUTPUT->user_picture($user, array('size'=>16, 'alttext'=>false, 'link'=>false)) .$user->fullname.'</a></div>';
}
if ($canshowicon and ($USER->id != $user->id) and !isguestuser($user)) { // Only when logged in and messaging active etc
$anchortagcontents = '<img class="iconsmall" src="'.$OUTPUT->pix_url('t/message') . '" alt="'. get_string('messageselectadd') .'" />';
+1 -1
View File
@@ -239,7 +239,7 @@
$r = html_writer::start_tag('li');
$r.= html_writer::start_tag('div',array('class'=>'link'));
$r.= html_writer::link(clean_param($link,PARAM_URL), s($title), array('onclick'=>'this.target="_blank"'));
$r.= html_writer::link($link, s($title), array('onclick'=>'this.target="_blank"'));
$r.= html_writer::end_tag('div');
if($this->config->display_description && !empty($description)){
@@ -27,6 +27,7 @@ class block_search_forums extends block_base {
$this->content->text = '<div class="searchform">';
$this->content->text .= '<form action="'.$CFG->wwwroot.'/mod/forum/search.php" style="display:inline"><fieldset class="invisiblefieldset">';
$this->content->text .= '<legend class="accesshide">'.$strsearch.'</legend>';
$this->content->text .= '<input name="id" type="hidden" value="'.$this->page->course->id.'" />'; // course
$this->content->text .= '<label class="accesshide" for="searchform_search">'.$strsearch.'</label>'.
'<input id="searchform_search" name="search" type="text" size="16" />';
+3 -1
View File
@@ -40,18 +40,20 @@ class block_settings_renderer extends plugin_renderer_base {
// this applies to the li item which contains all child lists too
$liclasses = array($item->get_css_type());
$liexpandable = array();
if (!$item->forceopen || (!$item->forceopen && $item->collapse) || ($item->children->count()==0 && $item->nodetype==navigation_node::NODETYPE_BRANCH)) {
$liclasses[] = 'collapsed';
}
if ($isbranch) {
$liclasses[] = 'contains_branch';
$liexpandable = array('aria-expanded' => in_array('collapsed', $liclasses) ? "false" : "true");
} else if ($hasicon) {
$liclasses[] = 'item_with_icon';
}
if ($item->isactive === true) {
$liclasses[] = 'current_branch';
}
$liattr = array('class'=>join(' ',$liclasses));
$liattr = array('class' => join(' ',$liclasses)) + $liexpandable;
// class attribute on the div item which only contains the item content
$divclasses = array('tree_item');
if ($isbranch) {
+1
View File
@@ -82,6 +82,7 @@ $string['pluginname'] = 'Tags';
$string['select'] = 'Select...';
$string['showcoursetags'] = 'Show course tags';
$string['showcoursetagsdef'] = 'Display the course tagging features in the tags block, allowing students to tag courses.';
$string['suggestedtagthisunit'] = 'Suggested tag to this course:';
$string['tags'] = 'tags';
$string['tagthisunit'] = 'Tag this course:';
$string['tagunits'] = 'to tag your favourite courses';
+12
View File
@@ -104,11 +104,23 @@ function blog_rss_get_params($filters) {
function blog_rss_get_feed($context, $args) {
global $CFG, $SITE, $DB;
if (empty($CFG->bloglevel)) {
debugging('Blogging disabled on this site, RSS feeds are not available');
return null;
}
if (empty($CFG->enablerssfeeds)) {
debugging('Sorry, RSS feeds are disabled on this site');
return '';
}
if ($CFG->bloglevel == BLOG_SITE_LEVEL) {
if (isguestuser()) {
debugging(get_string('nopermissiontoshow','error'));
return '';
}
}
$sitecontext = get_context_instance(CONTEXT_SYSTEM);
if (!has_capability('moodle/blog:view', $sitecontext)) {
return null;
+9 -5
View File
@@ -1931,24 +1931,22 @@ class calendar_event {
if ($usingeditor) {
switch ($this->properties->eventtype) {
case 'user':
$this->editorcontext = $this->properties->context;
$this->properties->courseid = 0;
$this->properties->course = 0;
$this->properties->groupid = 0;
$this->properties->userid = $USER->id;
break;
case 'site':
$this->editorcontext = $this->properties->context;
$this->properties->courseid = SITEID;
$this->properties->course = SITEID;
$this->properties->groupid = 0;
$this->properties->userid = $USER->id;
break;
case 'course':
$this->editorcontext = $this->properties->context;
$this->properties->groupid = 0;
$this->properties->userid = $USER->id;
break;
case 'group':
$this->editorcontext = $this->properties->context;
$this->properties->userid = $USER->id;
break;
default:
@@ -1958,6 +1956,13 @@ class calendar_event {
break;
}
// If we are actually using the editor, we recalculate the context because some default values
// were set when calculate_context() was called from the constructor.
if ($usingeditor) {
$this->properties->context = $this->calculate_context($this->properties);
$this->editorcontext = $this->properties->context;
}
$editor = $this->properties->description;
$this->properties->format = $this->properties->description['format'];
$this->properties->description = $this->properties->description['text'];
@@ -1976,7 +1981,6 @@ class calendar_event {
$this->editoroptions,
$editor['text'],
$this->editoroptions['forcehttps']);
$DB->set_field('event', 'description', $this->properties->description, array('id'=>$this->properties->id));
}
+5 -5
View File
@@ -460,7 +460,7 @@ class core_calendar_renderer extends plugin_renderer_base {
// Paddding (the first week may have blank days in the beginning)
for($i = $display->minwday; $i < $startwday; ++$i) {
$cell = new html_table_cell('&nbsp;');
$cell->attributes = array('class'=>'nottoday');
$cell->attributes = array('class'=>'nottoday dayblank');
$row->cells[] = $cell;
}
@@ -519,10 +519,10 @@ class core_calendar_renderer extends plugin_renderer_base {
}
// Special visual fx for today
if($display->thismonth && $calendar->day == $calendar->day) {
$cellclasses[] = 'today';
if ($display->thismonth && $calendar->day == $date['mday']) {
$cellclasses[] = 'day today';
} else {
$cellclasses[] = 'nottoday';
$cellclasses[] = 'day nottoday';
}
$cell->attributes = array('class'=>join(' ',$cellclasses));
@@ -553,7 +553,7 @@ class core_calendar_renderer extends plugin_renderer_base {
// Paddding (the last week may have blank days at the end)
for($i = $dayweek; $i <= $display->maxwday; ++$i) {
$cell = new html_table_cell('&nbsp;');
$cell->attributes = array('class'=>'nottoday');
$cell->attributes = array('class'=>'nottoday dayblank');
$row->cells[] = $cell;
}
$table->data[] = $row;
+2
View File
@@ -24,6 +24,8 @@ YUI.add('moodle-calendar-eventmanager', function(Y) {
this.publish('hideevent');
td.on('mouseenter', this.startShow, this);
td.on('mouseleave', this.startHide, this);
td.on('focus', this.startShow, this);
td.on('blur', this.startHide, this);
return true;
},
initPanel : function() {
+2 -2
View File
@@ -70,8 +70,8 @@ echo $OUTPUT->heading(get_string('assignto', 'cohort', format_string($cohort->na
echo $OUTPUT->notification(get_string('removeuserwarning', 'core_cohort'));
// Get the user_selector we will need.
$potentialuserselector = new cohort_candidate_selector('addselect', array('cohortid'=>$cohort->id));
$existinguserselector = new cohort_existing_selector('removeselect', array('cohortid'=>$cohort->id));
$potentialuserselector = new cohort_candidate_selector('addselect', array('cohortid'=>$cohort->id, 'accesscontext'=>$context));
$existinguserselector = new cohort_existing_selector('removeselect', array('cohortid'=>$cohort->id, 'accesscontext'=>$context));
// Process incoming user assignments to the cohort
+2 -2
View File
@@ -126,7 +126,7 @@ function cohort_delete_category($category) {
}
/**
* Remove cohort member
* Add cohort member
* @param int $cohortid
* @param int $userid
* @return void
@@ -143,7 +143,7 @@ function cohort_add_member($cohortid, $userid) {
}
/**
* Add cohort member
* Remove cohort member
* @param int $cohortid
* @param int $userid
* @return void
+1 -1
View File
@@ -184,7 +184,7 @@ bodyContent: '<div class="comment-delete-confirm"><a href="#" id="confirmdelete-
val = val.replace('___name___', list[i].fullname);
}
if (list[i]['delete']||newcmt) {
list[i].content = '<div class="comment-delete"><a href="#" id ="comment-delete-'+this.client_id+'-'+list[i].id+'" title="'+M.str.moodle.deletecomment+'"><img src="'+M.util.image_url('t/delete', 'core')+'" /></a></div>' + list[i].content;
list[i].content = '<div class="comment-delete"><a href="#" id ="comment-delete-'+this.client_id+'-'+list[i].id+'" title="'+M.str.moodle.deletecomment+'"><img alt="" src="'+M.util.image_url('t/delete', 'core')+'" /></a></div>' + list[i].content;
}
val = val.replace('___time___', list[i].time);
val = val.replace('___picture___', list[i].avatar);
+1 -1
View File
@@ -34,7 +34,7 @@ $action = optional_param('action', '', PARAM_ALPHA);
$area = optional_param('area', '', PARAM_AREA);
$content = optional_param('content', '', PARAM_RAW);
$itemid = optional_param('itemid', '', PARAM_INT);
$returnurl = optional_param('returnurl', '/', PARAM_URL);
$returnurl = optional_param('returnurl', '/', PARAM_LOCALURL);
$component = optional_param('component', '', PARAM_COMPONENT);
// Currently this script can only add comments
+1 -1
View File
@@ -89,7 +89,7 @@ class comment_manager {
*/
private function setup_course($courseid) {
global $PAGE, $DB;
if (!empty($this->course)) {
if (!empty($this->course) && $this->course->id == $courseid) {
// already set, stop
return;
}
+14 -2
View File
@@ -27,10 +27,10 @@
require_once("../config.php");
require_once($CFG->dirroot.'/course/lib.php');
require_once($CFG->libdir.'/textlib.class.php');
$id = required_param('id', PARAM_INT); // Category id
$page = optional_param('page', 0, PARAM_INT); // which page to show
$perpage = optional_param('perpage', $CFG->coursesperpage, PARAM_INT); // how many per page
$categoryedit = optional_param('categoryedit', -1, PARAM_BOOL);
$hide = optional_param('hide', 0, PARAM_INT);
$show = optional_param('show', 0, PARAM_INT);
@@ -40,6 +40,16 @@ $moveto = optional_param('moveto', 0, PARAM_INT);
$resort = optional_param('resort', 0, PARAM_BOOL);
$sesskey = optional_param('sesskey', '', PARAM_RAW);
// MDL-27824 - This is a temporary fix until we have the proper
// way to check/initialize $CFG value.
// @todo MDL-35138 remove this temporary solution
if (!empty($CFG->coursesperpage)) {
$defaultperpage = $CFG->coursesperpage;
} else {
$defaultperpage = 20;
}
$perpage = optional_param('perpage', $defaultperpage, PARAM_INT); // how many per page
if (empty($id)) {
print_error("unknowcategory");
}
@@ -75,7 +85,8 @@ $sesskeyprovided = !empty($sesskey) && confirm_sesskey($sesskey);
// Process any category actions.
if ($canmanage && $resort && $sesskeyprovided) {
// Resort the category if requested
if ($courses = get_courses($category->id, "fullname ASC", 'c.id,c.fullname,c.sortorder')) {
if ($courses = get_courses($category->id, '', 'c.id,c.fullname,c.sortorder')) {
collatorlib::asort_objects_by_property($courses, 'fullname');
$i = 1;
foreach ($courses as $course) {
$DB->set_field('course', 'sortorder', $category->sortorder+$i, array('id'=>$course->id));
@@ -180,6 +191,7 @@ if ($editingon && can_edit_in_category()) {
// Integrate into the admin tree only if the user can edit categories at the top level,
// otherwise the admin block does not appear to this user, and you get an error.
require_once($CFG->libdir . '/adminlib.php');
navigation_node::override_active_url(new moodle_url('/course/category.php', array('id' => $id)));
admin_externalpage_setup('coursemgmt', '', $urlparams, $CFG->wwwroot . '/course/category.php');
$PAGE->set_context($context); // Ensure that we are actually showing blocks etc for the cat context
+5 -3
View File
@@ -32,7 +32,11 @@ $categoryid = optional_param('category', 0, PARAM_INT); // course category - can
$returnto = optional_param('returnto', 0, PARAM_ALPHANUM); // generic navigation return page switch
$PAGE->set_pagelayout('admin');
$PAGE->set_url('/course/edit.php');
$pageparams = array('id'=>$id);
if (empty($id)) {
$pageparams = array('category'=>$categoryid);
}
$PAGE->set_url('/course/edit.php', $pageparams);
// basic access control checks
if ($id) { // editing course
@@ -46,7 +50,6 @@ if ($id) { // editing course
$category = $DB->get_record('course_categories', array('id'=>$course->category), '*', MUST_EXIST);
$coursecontext = get_context_instance(CONTEXT_COURSE, $course->id);
require_capability('moodle/course:update', $coursecontext);
$PAGE->url->param('id',$id);
} else if ($categoryid) { // creating new course in this category
$course = null;
@@ -54,7 +57,6 @@ if ($id) { // editing course
$category = $DB->get_record('course_categories', array('id'=>$categoryid), '*', MUST_EXIST);
$catcontext = get_context_instance(CONTEXT_COURSECAT, $category->id);
require_capability('moodle/course:create', $catcontext);
$PAGE->url->param('category',$categoryid);
$PAGE->set_context($catcontext);
} else {
+10 -2
View File
@@ -120,7 +120,11 @@ class course_edit_form extends moodleform {
$mform->addHelpButton('format', 'format');
$mform->setDefault('format', $courseconfig->format);
for ($i = 0; $i <= $courseconfig->maxsections; $i++) {
$max = $courseconfig->maxsections;
if (!isset($max) || !is_numeric($max)) {
$max = 52;
}
for ($i = 0; $i <= $max; $i++) {
$sectionmenu[$i] = "$i";
}
$mform->addElement('select', 'numsections', get_string('numberweeks'), $sectionmenu);
@@ -150,7 +154,11 @@ class course_edit_form extends moodleform {
$mform->addHelpButton('showreports', 'showreports');
$mform->setDefault('showreports', $courseconfig->showreports);
$choices = get_max_upload_sizes($CFG->maxbytes);
// Handle non-existing $course->maxbytes on course creation.
$coursemaxbytes = !isset($course->maxbytes) ? null : $course->maxbytes;
// Let's prepare the maxbytes popup.
$choices = get_max_upload_sizes($CFG->maxbytes, 0, 0, $coursemaxbytes);
$mform->addElement('select', 'maxbytes', get_string('maximumupload'), $choices);
$mform->addHelpButton('maxbytes', 'maximumupload');
$mform->setDefault('maxbytes', $courseconfig->maxbytes);
+6 -6
View File
@@ -198,7 +198,7 @@ class core_course_external extends external_api {
array(
'id' => new external_value(PARAM_INT, 'activity id'),
'url' => new external_value(PARAM_URL, 'activity url', VALUE_OPTIONAL),
'name' => new external_value(PARAM_TEXT, 'activity module name'),
'name' => new external_value(PARAM_RAW, 'activity module name'),
'description' => new external_value(PARAM_RAW, 'activity description', VALUE_OPTIONAL),
'visible' => new external_value(PARAM_INT, 'is the module visible', VALUE_OPTIONAL),
'modicon' => new external_value(PARAM_URL, 'activity icon url'),
@@ -267,7 +267,7 @@ class core_course_external extends external_api {
array('options' => $options));
//retrieve courses
if (!key_exists('ids', $params['options'])
if (!array_key_exists('ids', $params['options'])
or empty($params['options']['ids'])) {
$courses = $DB->get_records('course');
} else {
@@ -504,13 +504,13 @@ class core_course_external extends external_api {
require_capability('moodle/course:create', $context);
// Make sure lang is valid
if (key_exists('lang', $course) and empty($availablelangs[$course['lang']])) {
if (array_key_exists('lang', $course) and empty($availablelangs[$course['lang']])) {
throw new moodle_exception(
get_string('errorinvalidparam', 'webservice', 'lang'));
}
// Make sure theme is valid
if (key_exists('forcetheme', $course)) {
if (array_key_exists('forcetheme', $course)) {
if (!empty($CFG->allowcoursethemes)) {
if (empty($availablethemes[$course['forcetheme']])) {
throw new moodle_exception(
@@ -530,10 +530,10 @@ class core_course_external extends external_api {
//set default value for completion
$courseconfig = get_config('moodlecourse');
if (completion_info::is_enabled_for_site()) {
if (!key_exists('enablecompletion', $course)) {
if (!array_key_exists('enablecompletion', $course)) {
$course['enablecompletion'] = $courseconfig->enablecompletion;
}
if (!key_exists('completionstartonenrol', $course)) {
if (!array_key_exists('completionstartonenrol', $course)) {
$course['completionstartonenrol'] = $courseconfig->completionstartonenrol;
}
} else {
+26 -24
View File
@@ -583,7 +583,7 @@ function print_log_csv($course, $user, $date, $order='l.time DESC', $modname,
$ld = $DB->get_record('log_display', array('module'=>$log->module, 'action'=>$log->action));
$ldcache[$log->module][$log->action] = $ld;
}
if ($ld && !empty($log->info)) {
if ($ld && is_numeric($log->info)) {
// ugly hack to make sure fullname is shown correctly
if (($ld->mtable == 'user') and ($ld->field == $DB->sql_concat('firstname', "' '" , 'lastname'))) {
$log->info = fullname($DB->get_record($ld->mtable, array('id'=>$log->info)), true);
@@ -653,7 +653,7 @@ function print_log_xls($course, $user, $date, $order='l.time DESC', $modname,
// Creating worksheets
for ($wsnumber = 1; $wsnumber <= $nroPages; $wsnumber++) {
$sheettitle = get_string('logs').' '.$wsnumber.'-'.$nroPages;
$worksheet[$wsnumber] =& $workbook->add_worksheet($sheettitle);
$worksheet[$wsnumber] = $workbook->add_worksheet($sheettitle);
$worksheet[$wsnumber]->set_column(1, 1, 30);
$worksheet[$wsnumber]->write_string(0, 0, get_string('savedat').
userdate(time(), $strftimedatetime));
@@ -682,7 +682,7 @@ function print_log_xls($course, $user, $date, $order='l.time DESC', $modname,
$ld = $DB->get_record('log_display', array('module'=>$log->module, 'action'=>$log->action));
$ldcache[$log->module][$log->action] = $ld;
}
if ($ld && !empty($log->info)) {
if ($ld && is_numeric($log->info)) {
// ugly hack to make sure fullname is shown correctly
if (($ld->mtable == 'user') and ($ld->field == $DB->sql_concat('firstname', "' '" , 'lastname'))) {
$log->info = fullname($DB->get_record($ld->mtable, array('id'=>$log->info)), true);
@@ -766,7 +766,7 @@ function print_log_ods($course, $user, $date, $order='l.time DESC', $modname,
// Creating worksheets
for ($wsnumber = 1; $wsnumber <= $nroPages; $wsnumber++) {
$sheettitle = get_string('logs').' '.$wsnumber.'-'.$nroPages;
$worksheet[$wsnumber] =& $workbook->add_worksheet($sheettitle);
$worksheet[$wsnumber] = $workbook->add_worksheet($sheettitle);
$worksheet[$wsnumber]->set_column(1, 1, 30);
$worksheet[$wsnumber]->write_string(0, 0, get_string('savedat').
userdate(time(), $strftimedatetime));
@@ -795,7 +795,7 @@ function print_log_ods($course, $user, $date, $order='l.time DESC', $modname,
$ld = $DB->get_record('log_display', array('module'=>$log->module, 'action'=>$log->action));
$ldcache[$log->module][$log->action] = $ld;
}
if ($ld && !empty($log->info)) {
if ($ld && is_numeric($log->info)) {
// ugly hack to make sure fullname is shown correctly
if (($ld->mtable == 'user') and ($ld->field == $DB->sql_concat('firstname', "' '" , 'lastname'))) {
$log->info = fullname($DB->get_record($ld->mtable, array('id'=>$log->info)), true);
@@ -1591,6 +1591,11 @@ function print_section($course, $section, $mods, $modnamesused, $absolute=false,
if ($accessiblebutdim) {
$linkclasses .= ' dimmed';
$textclasses .= ' dimmed_text';
// If mod is visible and is dimmed because of condition then handle it nicely with JS.
if ($mod->visible) {
$linkclasses .= ' conditionalhidden';
$textclasses .= ' conditionalhidden';
}
$accesstext = '<span class="accesshide">'.
get_string('hiddenfromstudents').': </span>';
} else {
@@ -1617,8 +1622,7 @@ function print_section($course, $section, $mods, $modnamesused, $absolute=false,
// Display link itself
echo '<a ' . $linkcss . $mod->extra . $onclick .
' href="' . $url . '"><img src="' . $mod->get_icon_url() .
'" class="activityicon" alt="' .
$modulename . '" /> ' .
'" class="activityicon" alt="' . $modulename . '" /> ' .
$accesstext . '<span class="instancename">' .
$instancename . $altname . '</span></a>';
@@ -1655,9 +1659,7 @@ function print_section($course, $section, $mods, $modnamesused, $absolute=false,
// Display greyed-out text of link
echo '<div ' . $textcss . $mod->extra .
' >' . '<img src="' . $mod->get_icon_url() .
'" class="activityicon" alt="' .
$modulename .
'" /> <span>'. $instancename . $altname .
'" class="activityicon" alt="" /> <span>'. $instancename . $altname .
'</span></div>';
// Do not display content after link when it is greyed out like this.
@@ -3147,7 +3149,7 @@ function make_editing_buttons(stdClass $mod, $absolute_ignored = true, $movesele
if ($indent > 0) {
$actions[] = new action_link(
new moodle_url($baseurl, array('id' => $mod->id, 'indent' => '-1')),
new pix_icon($leftarrow, $str->moveleft, 'moodle', array('class' => 'iconsmall')),
new pix_icon($leftarrow, $str->moveleft, 'moodle', array('class' => 'iconsmall', 'title' => '')),
null,
array('class' => 'editing_moveleft', 'title' => $str->moveleft)
);
@@ -3155,7 +3157,7 @@ function make_editing_buttons(stdClass $mod, $absolute_ignored = true, $movesele
if ($indent >= 0) {
$actions[] = new action_link(
new moodle_url($baseurl, array('id' => $mod->id, 'indent' => '1')),
new pix_icon($rightarrow, $str->moveright, 'moodle', array('class' => 'iconsmall')),
new pix_icon($rightarrow, $str->moveright, 'moodle', array('class' => 'iconsmall', 'title' => '')),
null,
array('class' => 'editing_moveright', 'title' => $str->moveright)
);
@@ -3167,20 +3169,20 @@ function make_editing_buttons(stdClass $mod, $absolute_ignored = true, $movesele
if ($moveselect) {
$actions[] = new action_link(
new moodle_url($baseurl, array('copy' => $mod->id)),
new pix_icon('t/move', $str->move, 'moodle', array('class' => 'iconsmall')),
new pix_icon('t/move', $str->move, 'moodle', array('class' => 'iconsmall', 'title' => '')),
null,
array('class' => 'editing_move', 'title' => $str->move)
);
} else {
$actions[] = new action_link(
new moodle_url($baseurl, array('id' => $mod->id, 'move' => '-1')),
new pix_icon('t/up', $str->moveup, 'moodle', array('class' => 'iconsmall')),
new pix_icon('t/up', $str->moveup, 'moodle', array('class' => 'iconsmall', 'title' => '')),
null,
array('class' => 'editing_moveup', 'title' => $str->moveup)
);
$actions[] = new action_link(
new moodle_url($baseurl, array('id' => $mod->id, 'move' => '1')),
new pix_icon('t/down', $str->movedown, 'moodle', array('class' => 'iconsmall')),
new pix_icon('t/down', $str->movedown, 'moodle', array('class' => 'iconsmall', 'title' => '')),
null,
array('class' => 'editing_movedown', 'title' => $str->movedown)
);
@@ -3191,7 +3193,7 @@ function make_editing_buttons(stdClass $mod, $absolute_ignored = true, $movesele
if ($hasmanageactivities) {
$actions[] = new action_link(
new moodle_url($baseurl, array('update' => $mod->id)),
new pix_icon('t/edit', $str->update, 'moodle', array('class' => 'iconsmall')),
new pix_icon('t/edit', $str->update, 'moodle', array('class' => 'iconsmall', 'title' => '')),
null,
array('class' => 'editing_update', 'title' => $str->update)
);
@@ -3201,7 +3203,7 @@ function make_editing_buttons(stdClass $mod, $absolute_ignored = true, $movesele
if (has_all_capabilities($dupecaps, $coursecontext) && plugin_supports('mod', $mod->modname, FEATURE_BACKUP_MOODLE2)) {
$actions[] = new action_link(
new moodle_url($baseurl, array('duplicate' => $mod->id)),
new pix_icon('t/copy', $str->duplicate, 'moodle', array('class' => 'iconsmall')),
new pix_icon('t/copy', $str->duplicate, 'moodle', array('class' => 'iconsmall', 'title' => '')),
null,
array('class' => 'editing_duplicate', 'title' => $str->duplicate)
);
@@ -3211,7 +3213,7 @@ function make_editing_buttons(stdClass $mod, $absolute_ignored = true, $movesele
if ($hasmanageactivities) {
$actions[] = new action_link(
new moodle_url($baseurl, array('delete' => $mod->id)),
new pix_icon('t/delete', $str->delete, 'moodle', array('class' => 'iconsmall')),
new pix_icon('t/delete', $str->delete, 'moodle', array('class' => 'iconsmall', 'title' => '')),
null,
array('class' => 'editing_delete', 'title' => $str->delete)
);
@@ -3222,14 +3224,14 @@ function make_editing_buttons(stdClass $mod, $absolute_ignored = true, $movesele
if ($mod->visible) {
$actions[] = new action_link(
new moodle_url($baseurl, array('hide' => $mod->id)),
new pix_icon('t/hide', $str->hide, 'moodle', array('class' => 'iconsmall')),
new pix_icon('t/hide', $str->hide, 'moodle', array('class' => 'iconsmall', 'title' => '')),
null,
array('class' => 'editing_hide', 'title' => $str->hide)
);
} else {
$actions[] = new action_link(
new moodle_url($baseurl, array('show' => $mod->id)),
new pix_icon('t/show', $str->show, 'moodle', array('class' => 'iconsmall')),
new pix_icon('t/show', $str->show, 'moodle', array('class' => 'iconsmall', 'title' => '')),
null,
array('class' => 'editing_show', 'title' => $str->show)
);
@@ -3260,7 +3262,7 @@ function make_editing_buttons(stdClass $mod, $absolute_ignored = true, $movesele
if ($mod->groupmodelink) {
$actions[] = new action_link(
new moodle_url($baseurl, array('id' => $mod->id, 'groupmode' => $groupmode)),
new pix_icon($groupimage, $grouptitle, 'moodle', array('class' => 'iconsmall')),
new pix_icon($groupimage, $grouptitle, 'moodle', array('class' => 'iconsmall', 'title' => '')),
null,
array('class' => $groupclass, 'title' => $grouptitle)
);
@@ -3273,7 +3275,7 @@ function make_editing_buttons(stdClass $mod, $absolute_ignored = true, $movesele
if (has_capability('moodle/role:assign', $modcontext)){
$actions[] = new action_link(
new moodle_url('/'.$CFG->admin.'/roles/assign.php', array('contextid' => $modcontext->id)),
new pix_icon('i/roles', $str->assign, 'moodle', array('class' => 'iconsmall')),
new pix_icon('i/roles', $str->assign, 'moodle', array('class' => 'iconsmall', 'title' => '')),
null,
array('class' => 'editing_assign', 'title' => $str->assign)
);
@@ -3948,7 +3950,7 @@ function average_number_of_participants() {
WHERE ue.enrolid = e.id
AND e.courseid <> :siteid
AND c.id = e.courseid
AND c.visible = 1) as total';
AND c.visible = 1) total';
$params = array('siteid' => $SITE->id);
$enrolmenttotal = $DB->count_records_sql($sql, $params);
@@ -3981,7 +3983,7 @@ function average_number_of_courses_modules() {
WHERE c.id = cm.course
AND c.id <> :siteid
AND cm.visible = 1
AND c.visible = 1) as total';
AND c.visible = 1) total';
$params = array('siteid' => $SITE->id);
$moduletotal = $DB->count_records_sql($sql, $params);
+1 -1
View File
@@ -78,7 +78,7 @@ if ($backup->get_stage() !== backup_ui::STAGE_COMPLETE) {
echo $OUTPUT->header();
echo $OUTPUT->heading(get_string('publishcourseon', 'hub', !empty($hubname)?$hubname:$huburl), 3, 'main');
if ($backup->enforce_changed_dependencies()) {
echo $renderer->dependency_notification(get_string('dependenciesenforced', 'backup'));
debugging('Your settings have been altered due to unmet dependencies', DEBUG_DEVELOPER);
}
echo $renderer->progress_bar($backup->get_progress_bar());
echo $backup->display();
+3
View File
@@ -99,6 +99,9 @@ class recent_form extends moodleform {
$mform->addElement('select', 'user', get_string('participants'), $options);
$mform->setAdvanced('user');
} else {
// Default to no user.
$mform->addElement('hidden', 'user', 0);
}
$options = array(''=>get_string('allactivities'));
+2 -1
View File
@@ -143,8 +143,9 @@ class core_course_renderer extends plugin_renderer_base {
}
if ($course->summary) {
$url = new moodle_url('/course/info.php', array('id' => $course->id));
$image = html_writer::empty_tag('img', array('src'=>$this->output->pix_url('i/info'), 'alt'=>$this->strings->summary));
$content .= html_writer::link(new moodle_url('/course/info.php', array('id'=>$course->id)), $image, array('title'=>$this->strings->summary));
$content .= $this->action_link($url, $image, new popup_action('click', $url, 'courseinfo'), array('title' => $this->strings->summary));
}
$content .= html_writer::end_tag('div');
$content .= html_writer::end_tag('div');
+2 -2
View File
@@ -35,7 +35,7 @@ require_once($CFG->dirroot.'/course/lib.php');
$id = required_param('id', PARAM_INT);
$switchrole = optional_param('switchrole',-1, PARAM_INT);
$returnurl = optional_param('returnurl', false, PARAM_URL);
$returnurl = optional_param('returnurl', false, PARAM_LOCALURL);
$PAGE->set_url('/course/switchrole.php', array('id'=>$id));
@@ -86,4 +86,4 @@ if ($returnurl === false) {
$returnurl = new moodle_url('/course/view.php', array('id' => $course->id));
}
redirect($returnurl);
redirect($returnurl);
+5
View File
@@ -17,6 +17,7 @@
$move = optional_param('move', 0, PARAM_INT);
$marker = optional_param('marker',-1 , PARAM_INT);
$switchrole = optional_param('switchrole',-1, PARAM_INT);
$return = optional_param('return', 0, PARAM_LOCALURL);
if (empty($id) && empty($name) && empty($idnumber)) {
print_error('unspecifycourseid', 'error');
@@ -110,6 +111,8 @@
// Redirect to site root if Editing is toggled on frontpage
if ($course->id == SITEID) {
redirect($CFG->wwwroot .'/?redirect=0');
} else if (!empty($return)) {
redirect($CFG->wwwroot . $return);
} else {
redirect($PAGE->url);
}
@@ -122,6 +125,8 @@
// Redirect to site root if Editing is toggled on frontpage
if ($course->id == SITEID) {
redirect($CFG->wwwroot .'/?redirect=0');
} else if (!empty($return)) {
redirect($CFG->wwwroot . $return);
} else {
redirect($PAGE->url);
}
+6 -2
View File
@@ -54,9 +54,9 @@ echo $OUTPUT->header(); // send headers
$manager = new course_enrolment_manager($PAGE, $course);
$outcome = new stdClass;
$outcome = new stdClass();
$outcome->success = true;
$outcome->response = new stdClass;
$outcome->response = new stdClass();
$outcome->error = '';
switch ($action) {
@@ -99,6 +99,10 @@ switch ($action) {
$user->fullname = fullname($user);
unset($user->id);
}
// Chrome will display users in the order of the array keys, so we need
// to ensure that the results ordered array keys. Fortunately, the JavaScript
// does not care what the array keys are. It uses user.id where necessary.
$outcome->response['users'] = array_values($outcome->response['users']);
$outcome->success = true;
break;
default:
+2 -2
View File
@@ -415,8 +415,8 @@ function authorize_print_order($orderid)
}
$a = new stdClass;
$a->upto = $upto;
$extrahtml = get_string('howmuch', 'enrol_authorize') .
' <input type="text" size="5" name="amount" value="'.$amount.'" /> ' .
$extrahtml = '<label for="amount">'.get_string('howmuch', 'enrol_authorize').'</label> ' .
'<input id="amount" type="text" size="5" name="amount" value="'.$amount.'" /> ' .
get_string('canbecredit', 'enrol_authorize', $a) . '<br />';
$table->data[] = array("<b>$strs->confirm:</b>",
authorize_print_action_button($orderid, ORDER_REFUND, 0, true, $authstrs->unenrolstudent, $strs->no, $extrahtml));
+3 -4
View File
@@ -446,9 +446,8 @@ class enrol_database_plugin extends enrol_plugin {
}
$rs->Close();
} else {
mtrace('Error while communicating with external enrolment database');
$extdb->Close();
return;
mtrace(" error: skipping course '$course->mapping' - could not match with external database");
continue;
}
unset($user_mapping);
@@ -593,7 +592,7 @@ class enrol_database_plugin extends enrol_plugin {
if ($idnumber) {
$sqlfields[] = $idnumber;
}
$sql = $this->db_get_sql($table, array(), $sqlfields);
$sql = $this->db_get_sql($table, array(), $sqlfields, true);
$createcourses = array();
if ($rs = $extdb->Execute($sql)) {
if (!$rs->EOF) {
+2 -2
View File
@@ -371,7 +371,7 @@ class core_role_external extends external_api {
// throw an exception if user is not able to assign the role in this context
$roles = get_assignable_roles($context, ROLENAME_SHORT);
if (!key_exists($assignment['roleid'], $roles)) {
if (!array_key_exists($assignment['roleid'], $roles)) {
throw new invalid_parameter_exception('Can not assign roleid='.$assignment['roleid'].' in contextid='.$assignment['contextid']);
}
@@ -433,7 +433,7 @@ class core_role_external extends external_api {
// throw an exception if user is not able to unassign the role in this context
$roles = get_assignable_roles($context, ROLENAME_SHORT);
if (!key_exists($unassignment['roleid'], $roles)) {
if (!array_key_exists($unassignment['roleid'], $roles)) {
throw new invalid_parameter_exception('Can not unassign roleid='.$unassignment['roleid'].' in contextid='.$unassignment['contextid']);
}
+4 -4
View File
@@ -151,7 +151,7 @@ class enrol_flatfile_plugin extends enrol_plugin {
if(! @unlink($filename)) {
$eventdata = new stdClass();
$eventdata->modulename = 'moodle';
$eventdata->component = 'course';
$eventdata->component = 'enrol_flatfile';
$eventdata->name = 'flatfile_enrolment';
$eventdata->userfrom = get_admin();
$eventdata->userto = get_admin();
@@ -169,7 +169,7 @@ class enrol_flatfile_plugin extends enrol_plugin {
// Send mail to admin
$eventdata = new stdClass();
$eventdata->modulename = 'moodle';
$eventdata->component = 'course';
$eventdata->component = 'enrol_flatfile';
$eventdata->name = 'flatfile_enrolment';
$eventdata->userfrom = get_admin();
$eventdata->userto = get_admin();
@@ -280,7 +280,7 @@ class enrol_flatfile_plugin extends enrol_plugin {
$eventdata = new stdClass();
$eventdata->modulename = 'moodle';
$eventdata->component = 'course';
$eventdata->component = 'enrol_flatfile';
$eventdata->name = 'flatfile_enrolment';
$eventdata->userfrom = $teacher;
$eventdata->userto = $user;
@@ -303,7 +303,7 @@ class enrol_flatfile_plugin extends enrol_plugin {
$eventdata = new stdClass();
$eventdata->modulename = 'moodle';
$eventdata->component = 'course';
$eventdata->component = 'enrol_flatfile';
$eventdata->name = 'flatfile_enrolment';
$eventdata->userfrom = $user;
$eventdata->userto = $teacher;
+2
View File
@@ -93,6 +93,8 @@ $string['pluginname'] = 'LDAP enrolments';
$string['pluginname_desc'] = '<p>You can use an LDAP server to control your enrolments. It is assumed your LDAP tree contains groups that map to the courses, and that each of those groups/courses will have membership entries to map to students.</p><p>It is assumed that courses are defined as groups in LDAP, with each group having multiple membership fields (<em>member</em> or <em>memberUid</em>) that contain a uniqueidentification of the user.</p><p>To use LDAP enrolment, your users <strong>must</strong> to have a valid idnumber field. The LDAP groups must have that idnumber in the member fields for a user to be enrolled in the course. This will usually work well if you are already using LDAP Authentication.</p><p>Enrolments will be updated when the user logs in. You can also run a script to keep enrolments in synch. Look in <em>enrol/ldap/cli/sync.php</em>.</p><p>This plugin can also be set to automatically create new courses when new groups appear in LDAP.</p>';
$string['pluginnotenabled'] = 'Plugin not enabled!';
$string['role_mapping'] = '<p>For each role that you want to assign from LDAP, you need to specify the list of contexts where the role courses\'s groups are located. Separate different contexts with \';\'.</p><p>You also need to specify the attribute your LDAP server uses to hold the members of a group. Usually \'member\' or \'memberUid\'</p>';
$string['role_mapping_attribute'] = 'LDAP member attribute for {$a}';
$string['role_mapping_context'] = 'LDAP contexts for {$a}';
$string['role_mapping_key'] = 'Map roles from LDAP ';
$string['roles'] = 'Role mapping';
$string['server_settings'] = 'LDAP server settings';
+4 -2
View File
@@ -151,7 +151,8 @@ class admin_setting_ldap_rolemapping extends admin_setting {
foreach ($data as $role) {
$contextid = $this->get_id().'['.$role['id'].'][contexts]';
$contextname = $this->get_full_name().'['.$role['id'].'][contexts]';
$return .= '<div style="height: 2em;"><input type="text" size="40" id="'.$contextid.'" name="'.$contextname.'" value="'.s($role['contexts']).'"/></div>';
$return .= '<div style="height: 2em;"><label class="accesshide" for="'.$contextid.'">'.get_string('role_mapping_context', 'enrol_ldap', $role['name']).'</label>';
$return .= '<input type="text" size="40" id="'.$contextid.'" name="'.$contextname.'" value="'.s($role['contexts']).'"/></div>';
}
$return .= '</div>';
@@ -160,7 +161,8 @@ class admin_setting_ldap_rolemapping extends admin_setting {
foreach ($data as $role) {
$memberattrid = $this->get_id().'['.$role['id'].'][memberattribute]';
$memberattrname = $this->get_full_name().'['.$role['id'].'][memberattribute]';
$return .= '<div style="height: 2em;"><input type="text" size="15" id="'.$memberattrid.'" name="'.$memberattrname.'" value="'.s($role['memberattribute']).'"/></div>';
$return .= '<div style="height: 2em;"><label class="accesshide" for="'.$memberattrid.'">'.get_string('role_mapping_attribute', 'enrol_ldap', $role['name']).'</label>';
$return .= '<input type="text" size="15" id="'.$memberattrid.'" name="'.$memberattrname.'" value="'.s($role['memberattribute']).'"/></div>';
}
$return .= '</div>';
$return .= '<div style="clear:both;"></div>';
+3 -1
View File
@@ -770,13 +770,15 @@ class course_enrolment_manager {
$users = array();
foreach ($userroles as $userrole) {
$contextid = $userrole->contextid;
unset($userrole->contextid); // This would collide with user avatar.
if (!array_key_exists($userrole->id, $users)) {
$users[$userrole->id] = $this->prepare_user_for_display($userrole, $extrafields, $now);
}
$a = new stdClass;
$a->role = $roles[$userrole->roleid]->localname;
$changeable = ($userrole->component == '');
if ($userrole->contextid == $this->context->id) {
if ($contextid == $this->context->id) {
$roletext = get_string('rolefromthiscourse', 'enrol', $a);
} else {
$changeable = false;
+7 -3
View File
@@ -53,9 +53,9 @@ echo $OUTPUT->header(); // send headers
$manager = new course_enrolment_manager($PAGE, $course);
$outcome = new stdClass;
$outcome = new stdClass();
$outcome->success = true;
$outcome->response = new stdClass;
$outcome->response = new stdClass();
$outcome->error = '';
switch ($action) {
@@ -79,6 +79,10 @@ switch ($action) {
}
$user->extrafields = implode(', ', $fieldvalues);
}
// Chrome will display users in the order of the array keys, so we need
// to ensure that the results ordered array keys. Fortunately, the JavaScript
// does not care what the array keys are. It uses user.id where necessary.
$outcome->response['users'] = array_values($outcome->response['users']);
$outcome->success = true;
break;
case 'enrol':
@@ -135,4 +139,4 @@ switch ($action) {
throw new enrol_ajax_exception('unknowajaxaction');
}
echo json_encode($outcome);
echo json_encode($outcome);
+1 -1
View File
@@ -90,7 +90,7 @@ class enrol_manual_external extends external_api {
//throw an exception if user is not able to assign the role
$roles = get_assignable_roles($context);
if (!key_exists($enrolment['roleid'], $roles)) {
if (!array_key_exists($enrolment['roleid'], $roles)) {
$errorparams = new stdClass();
$errorparams->roleid = $enrolment['roleid'];
$errorparams->courseid = $enrolment['courseid'];
+1 -1
View File
@@ -64,7 +64,7 @@ $PAGE->set_heading($course->fullname);
navigation_node::override_active_url(new moodle_url('/enrol/users.php', array('id'=>$course->id)));
// Create the user selector objects.
$options = array('enrolid' => $enrolid);
$options = array('enrolid' => $enrolid, 'accesscontext' => $context);
$potentialuserselector = new enrol_manual_potential_participant('addselect', $options);
$currentuserselector = new enrol_manual_current_participant('removeselect', $options);
+7 -4
View File
@@ -141,6 +141,11 @@ YUI.add('moodle-enrol_manual-quickenrolment', function(Y) {
base.one('.'+CSS.HEADER+' h2').setStyle('cursor', 'move');
this.get(UEP.BASE).one('.'+CSS.SEARCHOPTIONS+' .'+CSS.COLLAPSIBLEHEADING).one('img').setAttribute('src', M.util.image_url('t/collapsed', 'moodle'));
this.get(UEP.BASE).one('.'+CSS.SEARCHOPTIONS+' .'+CSS.COLLAPSIBLEHEADING).once('click', function() {
// We want to do this just once, the first time the controls are shown.
this.populateStartDates();
this.populateDuration();
}, this);
this.get(UEP.BASE).one('.'+CSS.SEARCHOPTIONS+' .'+CSS.COLLAPSIBLEHEADING).on('click', function(){
this.get(UEP.BASE).one('.'+CSS.SEARCHOPTIONS+' .'+CSS.COLLAPSIBLEHEADING).toggleClass(CSS.ACTIVE);
this.get(UEP.BASE).one('.'+CSS.SEARCHOPTIONS+' .'+CSS.COLLAPSIBLEAREA).toggleClass(CSS.HIDDEN);
@@ -150,10 +155,7 @@ YUI.add('moodle-enrol_manual-quickenrolment', function(Y) {
this.get(UEP.BASE).one('.'+CSS.SEARCHOPTIONS+' .'+CSS.COLLAPSIBLEHEADING).one('img').setAttribute('src', M.util.image_url('t/expanded', 'moodle'));
}
}, this);
this.populateAssignableRoles();
this.populateStartDates();
this.populateDuration();
},
populateAssignableRoles : function() {
this.on('assignablerolesloaded', function(){
@@ -192,9 +194,10 @@ YUI.add('moodle-enrol_manual-quickenrolment', function(Y) {
var select = this.get(UEP.BASE).one('.'+CSS.ENROLMENTOPTION+'.'+CSS.DURATION+' select');
var defaultvalue = this.get(UEP.DEFAULTDURATION);
var index = 0, count = 0;
var durationdays = M.util.get_string('durationdays', 'enrol', '{a}');
for (var i = 1; i <= 365; i++) {
count++;
var option = create('<option value="'+i+'">'+M.util.get_string('durationdays', 'enrol', i)+'</option>');
var option = create('<option value="'+i+'">'+durationdays.replace('{a}', i)+'</option>');
if (i == defaultvalue) {
index = count;
}
+4 -3
View File
@@ -90,13 +90,14 @@ if (! $plugin_instance = $DB->get_record("enrol", array("id"=>$data->instanceid,
$plugin = enrol_get_plugin('paypal');
/// Open a connection back to PayPal to validate the data
$paypaladdr = empty($CFG->usepaypalsandbox) ? 'www.paypal.com' : 'www.sandbox.paypal.com';
$c = new curl();
$options = array(
'returntransfer' => true,
'httpheader' => array('application/x-www-form-urlencoded'),
'httpheader' => array('application/x-www-form-urlencoded', "Host: $paypaladdr"),
'timeout' => 30,
'CURLOPT_HTTP_VERSION' => CURL_HTTP_VERSION_1_1,
);
$paypaladdr = empty($CFG->usepaypalsandbox) ? 'www.paypal.com' : 'www.sandbox.paypal.com';
$location = "https://$paypaladdr/cgi-bin/webscr";
$result = $c->post($location, $req, $options);
@@ -171,7 +172,7 @@ if (strlen($result) > 0) {
}
if ($data->business != $plugin->get_config('paypalbusiness')) { // Check that the email is the one we want it to be
if (textlib::strtolower($data->business) !== textlib::strtolower($plugin->get_config('paypalbusiness'))) { // Check that the email is the one we want it to be
message_paypal_error_to_admin("Business email is {$data->business} (not ".
$plugin->get_config('paypalbusiness').")", $data);
die;
+19
View File
@@ -207,4 +207,23 @@ class enrol_paypal_plugin extends enrol_plugin {
return $OUTPUT->box(ob_get_clean());
}
/**
* Gets an array of the user enrolment actions
*
* @param course_enrolment_manager $manager
* @param stdClass $ue A user enrolment object
* @return array An array of user_enrolment_actions
*/
public function get_user_enrolment_actions(course_enrolment_manager $manager, $ue) {
$actions = array();
$context = $manager->get_context();
$instance = $ue->enrolmentinstance;
$params = $manager->get_moodlepage()->url->params();
$params['ue'] = $ue->id;
if ($this->allow_unenrol($instance) && has_capability("enrol/paypal:unenrol", $context)) {
$url = new moodle_url('/enrol/unenroluser.php', $params);
$actions[] = new user_enrolment_action(new pix_icon('t/delete', ''), get_string('unenrol', 'enrol'), $url, array('class'=>'unenrollink', 'rel'=>$ue->id));
}
return $actions;
}
}
+2 -1
View File
@@ -35,10 +35,11 @@ if (!$course = $DB->get_record("course", array("id"=>$id))) {
}
$context = get_context_instance(CONTEXT_COURSE, $course->id, MUST_EXIST);
$PAGE->set_context($context);
require_login();
if ($SESSION->wantsurl) {
if (!empty($SESSION->wantsurl)) {
$destination = $SESSION->wantsurl;
unset($SESSION->wantsurl);
} else {
+1 -1
View File
@@ -431,7 +431,7 @@ class course_enrolment_table extends html_table implements renderable {
$this->page = optional_param(self::PAGEVAR, 0, PARAM_INT);
$this->perpage = optional_param(self::PERPAGEVAR, self::DEFAULTPERPAGE, PARAM_INT);
$this->sort = optional_param(self::SORTVAR, self::DEFAULTSORT, PARAM_ALPHA);
$this->sort = optional_param(self::SORTVAR, self::DEFAULTSORT, PARAM_ALPHANUM);
$this->sortdirection = optional_param(self::SORTDIRECTIONVAR, self::DEFAULTSORTDIRECTION, PARAM_ALPHA);
$this->attributes = array('class'=>'userenrolment');
@@ -1,12 +1,15 @@
.moodle-dialogue-base .hidden,
.moodle-dialogue-base .moodle-dialogue-hidden {display:none;}
.moodle-dialogue-base .moodle-dialogue-lightbox {background-color:#AAA;position:absolute;top:0;left:0;width:100%;height:100%;}
.moodle-dialogue-base .moodle-dialogue-lightbox {background-color:#AAA;}
.moodle-dialogue-base .moodle-dialogue {background-color:#666;border:0 solid #666;border-right-width:3px;border-bottom-width:3px;}
.moodle-dialogue-base .moodle-dialogue-wrap {background-color:#FFF;margin-top:-3px;margin-left:-3px;border:1px solid #555;height:auto;}
.moodle-dialogue-base .moodle-dialogue-hd {font-size:110%;color:inherit;font-weight:bold;text-align:left;padding:5px 6px;margin:0;border-bottom:1px solid #ccc;background-color:#f6f6f6;}
.moodle-dialogue-base .closebutton {background-image:url(sprite.png);width:25px;height:15px;background-repeat:no-repeat;float:right;vertical-align:middle;display:inline-block;cursor:pointer;}
.moodle-dialogue-base .moodle-dialogue-wrap .moodle-dialogue-hd {font-size:110%;color:inherit;font-weight:bold;text-align:left;padding:5px 6px;margin:0;border-bottom:1px solid #ccc;background:#f6f6f6;}
.moodle-dialogue-base .moodle-dialogue-wrap .moodle-dialogue-hd h1{font-size:100%;font-weight:bold;margin:0;padding:0;display:inline;}
.moodle-dialogue-base .moodle-dialogue-wrap .moodle-dialogue-hd .yui3-widget-buttons {padding: 5px;}
.moodle-dialogue-base .closebutton {background-image:url(sprite.png);width:25px;height:15px;background-repeat:no-repeat;float:right;vertical-align:middle;display:inline-block;cursor:pointer;padding:0px;border-style:none;}
.moodle-dialogue-base .moodle-dialogue-bd {padding:5px; overflow: auto;}
.moodle-dialogue-base .moodle-dialogue-fd {}
.moodle-dialogue-base .moodle-dialogue-wrap .moodle-dialogue-content {background:#FFF;padding:0px;}
.moodle-dialogue-base .moodle-dialogue-ft {}
.moodle-dialogue-confirm .confirmation-dialogue {text-align:center;}
.moodle-dialogue-confirm .confirmation-message {margin:0.5em 1em;}
+38 -31
View File
@@ -8,8 +8,6 @@ var DIALOGUE_NAME = 'Moodle dialogue',
ALERT_NAME = 'Moodle alert',
C = Y.Node.create,
BASE = 'notificationBase',
LIGHTBOX = 'lightbox',
NODELIGHTBOX = 'nodeLightbox',
COUNT = 0,
CONFIRMYES = 'yesLabel',
CONFIRMNO = 'noLabel',
@@ -21,7 +19,7 @@ var DIALOGUE_NAME = 'Moodle dialogue',
HEADER : 'moodle-dialogue-hd',
BODY : 'moodle-dialogue-bd',
CONTENT : 'moodle-dialogue-content',
FOOTER : 'moodle-dialogue-fd',
FOOTER : 'moodle-dialogue-ft',
HIDDEN : 'hidden',
LIGHTBOX : 'moodle-dialogue-lightbox'
};
@@ -31,45 +29,51 @@ var DIALOGUE = function(config) {
var id = 'moodle-dialogue-'+COUNT;
config.notificationBase =
C('<div class="'+CSS.BASE+'">')
.append(C('<div class="'+CSS.LIGHTBOX+' '+CSS.HIDDEN+'"></div>'))
.append(C('<div id="'+id+'" class="'+CSS.WRAP+'"></div>')
.append(C('<div class="'+CSS.HEADER+' yui3-widget-hd"></div>'))
.append(C('<div class="'+CSS.BODY+' yui3-widget-bd"></div>'))
.append(C('<div class="'+CSS.CONTENT+' yui3-widget-ft"></div>')));
.append(C('<div class="'+CSS.FOOTER+' yui3-widget-ft"></div>')));
Y.one(document.body).append(config.notificationBase);
config.srcNode = '#'+id;
config.width = config.width || '400px';
config.visible = config.visible || false;
config.center = config.centered || true;
config.centered = false;
// lightbox param to keep the stable versions API
if (config.lightbox === true) {
config.modal = true;
}
delete config.lightbox;
// closeButton param to keep the stable versions API
if (config.closeButton === false) {
config.buttons = null;
} else {
config.buttons = [
{
section: Y.WidgetStdMod.HEADER,
value : '',
classNames: 'closebutton',
action: function (e) {
e.preventDefault();
this.hide();
}
}
];
}
DIALOGUE.superclass.constructor.apply(this, [config]);
};
Y.extend(DIALOGUE, Y.Overlay, {
Y.extend(DIALOGUE, Y.Panel, {
initializer : function(config) {
this.set(NODELIGHTBOX, this.get(BASE).one('.'+CSS.LIGHTBOX).setStyle('opacity', 0.5));
this.after('visibleChange', this.visibilityChanged, this);
this.after('headerContentChange', function(e){
var h = (this.get('closeButton'))?this.get(BASE).one('.'+CSS.HEADER):false;
if (h && !h.one('.closebutton')) {
var c = C('<div class="closebutton"></div>');
c.on('click', this.hide, this);
h.append(c);
}
}, this);
this.render();
this.show();
},
visibilityChanged : function(e) {
switch (e.attrName) {
case 'visible':
if (this.get(LIGHTBOX)) {
var l = this.get(NODELIGHTBOX);
if (!e.prevVal && e.newVal) {
l.setStyle('height',l.get('docHeight')+'px').removeClass(CSS.HIDDEN);
} else if (e.prevVal && !e.newVal) {
l.addClass(CSS.HIDDEN);
}
}
this.get('maskNode').addClass(CSS.LIGHTBOX);
if (this.get('center') && !e.prevVal && e.newVal) {
this.centerDialogue();
}
@@ -95,9 +99,6 @@ Y.extend(DIALOGUE, Y.Overlay, {
ATTRS : {
notificationBase : {
},
nodeLightbox : {
value : null
},
lightbox : {
validator : Y.Lang.isBoolean,
@@ -116,6 +117,9 @@ Y.extend(DIALOGUE, Y.Overlay, {
var ALERT = function(config) {
config.closeButton = false;
if (config.lightbox !== false) {
config.lightbox = true;
}
ALERT.superclass.constructor.apply(this, [config]);
};
Y.extend(ALERT, DIALOGUE, {
@@ -129,7 +133,7 @@ Y.extend(ALERT, DIALOGUE, {
.append(yes));
this.get(BASE).addClass('moodle-dialogue-confirm');
this.setStdModContent(Y.WidgetStdMod.BODY, content, Y.WidgetStdMod.REPLACE);
this.setStdModContent(Y.WidgetStdMod.HEADER, this.get(TITLE), Y.WidgetStdMod.REPLACE);
this.setStdModContent(Y.WidgetStdMod.HEADER, '<h1>' + this.get(TITLE) + '</h1>', Y.WidgetStdMod.REPLACE);
this.after('destroyedChange', function(){this.get(BASE).remove();}, this);
this._enterKeypress = Y.on('key', this.submit, window, 'down:13', this);
yes.on('click', this.submit, this);
@@ -166,6 +170,9 @@ Y.extend(ALERT, DIALOGUE, {
});
var CONFIRM = function(config) {
if (config.lightbox !== false) {
config.lightbox = true;
}
CONFIRM.superclass.constructor.apply(this, [config]);
};
Y.extend(CONFIRM, DIALOGUE, {
@@ -184,7 +191,7 @@ Y.extend(CONFIRM, DIALOGUE, {
.append(no));
this.get(BASE).addClass('moodle-dialogue-confirm');
this.setStdModContent(Y.WidgetStdMod.BODY, content, Y.WidgetStdMod.REPLACE);
this.setStdModContent(Y.WidgetStdMod.HEADER, this.get(TITLE), Y.WidgetStdMod.REPLACE);
this.setStdModContent(Y.WidgetStdMod.HEADER, '<h1>' + this.get(TITLE) + '</h1>', Y.WidgetStdMod.REPLACE);
this.after('destroyedChange', function(){this.get(BASE).remove();}, this);
this._enterKeypress = Y.on('key', this.submit, window, 'down:13', this, true);
this._escKeypress = Y.on('key', this.submit, window, 'down:27', this, false);
@@ -237,7 +244,7 @@ Y.extend(EXCEPTION, DIALOGUE, {
_keypress : null,
initializer : function(config) {
this.get(BASE).addClass('moodle-dialogue-exception');
this.setStdModContent(Y.WidgetStdMod.HEADER, config.name, Y.WidgetStdMod.REPLACE);
this.setStdModContent(Y.WidgetStdMod.HEADER, '<h1>' + config.name + '</h1>', Y.WidgetStdMod.REPLACE);
var content = C('<div class="moodle-exception"></div>')
.append(C('<div class="moodle-exception-message">'+this.get('message')+'</div>'))
.append(C('<div class="moodle-exception-param hidden param-filename"><label>File:</label> '+this.get('fileName')+'</div>'))
@@ -308,7 +315,7 @@ Y.extend(AJAXEXCEPTION, DIALOGUE, {
_keypress : null,
initializer : function(config) {
this.get(BASE).addClass('moodle-dialogue-exception');
this.setStdModContent(Y.WidgetStdMod.HEADER, config.name, Y.WidgetStdMod.REPLACE);
this.setStdModContent(Y.WidgetStdMod.HEADER, '<h1>' + config.name + '</h1>', Y.WidgetStdMod.REPLACE);
var content = C('<div class="moodle-ajaxexception"></div>')
.append(C('<div class="moodle-exception-message">'+this.get('error')+'</div>'))
.append(C('<div class="moodle-exception-param hidden param-debuginfo"><label>URL:</label> '+this.get('reproductionlink')+'</div>'))
@@ -372,4 +379,4 @@ M.core.confirm = CONFIRM;
M.core.exception = EXCEPTION;
M.core.ajaxException = AJAXEXCEPTION;
}, '@VERSION@', {requires:['base','node','overlay','event-key', 'moodle-enrol-notification-skin']});
}, '@VERSION@', {requires:['base','node','panel','event-key', 'moodle-enrol-notification-skin']});
+1 -1
View File
@@ -114,7 +114,7 @@ class edit_outcome_form extends moodleform {
if (empty($courseid)) {
$mform->hardFreeze('standard');
} else if (empty($outcome->courseid) and !has_capability('moodle/grade:manage', get_context_instance(CONTEXT_SYSTEM))) {
} else if (!has_capability('moodle/grade:manage', get_context_instance(CONTEXT_SYSTEM))) {
$mform->hardFreeze('standard');
} else if ($coursecount and empty($outcome->courseid)) {
+1 -1
View File
@@ -41,7 +41,7 @@ require_capability('moodle/grade:manage', $context);
// default return url
$gpr = new grade_plugin_return();
$returnurl = $gpr->get_return_url($CFG->wwwroot.'/grade/report.php?id='.$course->id);
$returnurl = $gpr->get_return_url($CFG->wwwroot.'/grade/report/index.php?id='.$course->id);
if (!$grade_item = grade_item::fetch(array('id'=>$id, 'courseid'=>$course->id))) {
print_error('invaliditemid');
+1 -1
View File
@@ -50,7 +50,7 @@ if (!has_capability('moodle/grade:manage', $context)) {
// default return url
$gpr = new grade_plugin_return();
$returnurl = $gpr->get_return_url($CFG->wwwroot.'/grade/report.php?id='.$course->id);
$returnurl = $gpr->get_return_url($CFG->wwwroot.'/grade/report/index.php?id='.$course->id);
// security checks!
if (!empty($id)) {
+1 -1
View File
@@ -41,7 +41,7 @@ class grade_export_ods extends grade_export {
/// Sending HTTP headers
$workbook->send($downloadfilename);
/// Adding the worksheet
$myxls =& $workbook->add_worksheet($strgrades);
$myxls = $workbook->add_worksheet($strgrades);
/// Print names of all the fields
$myxls->write_string(0,0,get_string("firstname"));
+1 -1
View File
@@ -40,7 +40,7 @@ class grade_export_xls extends grade_export {
/// Sending HTTP headers
$workbook->send($downloadfilename);
/// Adding the worksheet
$myxls =& $workbook->add_worksheet($strgrades);
$myxls = $workbook->add_worksheet($strgrades);
/// Print names of all the fields
$myxls->write_string(0,0,get_string("firstname"));
+1 -1
View File
@@ -1445,7 +1445,7 @@ class grade_structure {
$url->param('action', 'show');
$hideicon = $OUTPUT->action_icon($url, new pix_icon('t/'.$type, $tooltip, 'moodle', array('alt'=>$strshow, 'class'=>'iconsmall')));
$hideicon = $OUTPUT->action_icon($url, new pix_icon('t/'.$type, $tooltip, 'moodle', array('alt'=>$strshow, 'class'=>'smallicon')));
} else {
$url->param('action', 'hide');
+3 -1
View File
@@ -214,7 +214,7 @@ border-color:#cecece;
}
.path-grade-report-grader th {
padding:2px 10px 0;
padding:1px 10px;
}
.path-grade-report-grader span.inclusion-links {
@@ -377,6 +377,8 @@ float:left;
clear:none;
padding-top:20px;
}
.path-grade-report-grader.dir-rtl .left_scroller {float:right;}
.path-grade-report-grader .right_scroller {
width:auto;
+7 -3
View File
@@ -350,17 +350,21 @@ abstract class grade_report {
global $CFG, $DB;
static $hiding_affected = null;//array of items in this course affected by hiding
//if we're dealing with multiple users we need to know when we've moved on to a new user
// If we're dealing with multiple users we need to know when we've moved on to a new user.
static $previous_userid = null;
// If we're dealing with multiple courses we need to know when we've moved on to a new course.
static $previous_courseid = null;
if( $this->showtotalsifcontainhidden==GRADE_REPORT_SHOW_REAL_TOTAL_IF_CONTAINS_HIDDEN ) {
return $finalgrade;
}
//if we've moved on to another user don't return the previous user's affected grades
if ($previous_userid!=$this->user->id) {
// If we've moved on to another course or user, reload the grades.
if ($previous_userid != $this->user->id || $previous_courseid != $courseid) {
$hiding_affected = null;
$previous_userid = $this->user->id;
$previous_courseid = $courseid;
}
if( !$hiding_affected ) {
+16 -10
View File
@@ -339,23 +339,29 @@ class grade_report_user extends grade_report {
$hidden = ' hidden';
}
$hide = false;
// If this is a hidden grade item, hide it completely from the user.
if ($grade_grade->is_hidden() && !$this->canviewhidden && (
$this->showhiddenitems == GRADE_REPORT_USER_HIDE_HIDDEN ||
($this->showhiddenitems == GRADE_REPORT_USER_HIDE_UNTIL && !$grade_grade->is_hiddenuntil()))) {
// return false;
} else {
// The grade object can be marked visible but still be hidden
// if "enablegroupmembersonly" is on and its an activity assigned to a grouping the user is not in
if (!empty($grade_object->itemmodule) && !empty($grade_object->iteminstance)) {
$instances = $this->gtree->modinfo->get_instances();
if (!empty($instances[$grade_object->itemmodule][$grade_object->iteminstance])) {
$cm = $instances[$grade_object->itemmodule][$grade_object->iteminstance];
if (!$cm->uservisible) {
return false;
$hide = true;
} else if (!empty($grade_object->itemmodule) && !empty($grade_object->iteminstance)) {
// The grade object can be marked visible but still be hidden if...
// 1) "enablegroupmembersonly" is on and the activity is assigned to a grouping the user is not in.
// 2) the student cannot see the activity due to conditional access and its set to be hidden entirely.
$instances = $this->gtree->modinfo->get_instances_of($grade_object->itemmodule);
if (!empty($instances[$grade_object->iteminstance])) {
$cm = $instances[$grade_object->iteminstance];
if (!$cm->uservisible) {
// Further checks are required to determine whether the activity is entirely hidden or just greyed out.
if ($cm->is_user_access_restricted_by_group() || $cm->is_user_access_restricted_by_conditional_access()) {
$hide = true;
}
}
}
}
if (!$hide) {
/// Excluded Item
if ($grade_grade->is_excluded()) {
$fullname .= ' ['.get_string('excluded', 'grades').']';
+11 -10
View File
@@ -205,17 +205,18 @@ function groups_update_group_icon($group, $data, $editform) {
$context = get_context_instance(CONTEXT_COURSE, $group->courseid, MUST_EXIST);
//TODO: it would make sense to allow picture deleting too (skodak)
if ($iconfile = $editform->save_temp_file('imagefile')) {
if (process_new_icon($context, 'group', 'icon', $group->id, $iconfile)) {
$DB->set_field('groups', 'picture', 1, array('id'=>$group->id));
$group->picture = 1;
} else {
$fs->delete_area_files($context->id, 'group', 'icon', $group->id);
$DB->set_field('groups', 'picture', 0, array('id'=>$group->id));
$group->picture = 0;
if (!empty($CFG->gdversion)) {
if ($iconfile = $editform->save_temp_file('imagefile')) {
if (process_new_icon($context, 'group', 'icon', $group->id, $iconfile)) {
$DB->set_field('groups', 'picture', 1, array('id'=>$group->id));
$group->picture = 1;
} else {
$fs->delete_area_files($context->id, 'group', 'icon', $group->id);
$DB->set_field('groups', 'picture', 0, array('id'=>$group->id));
$group->picture = 0;
}
@unlink($iconfile);
}
@unlink($iconfile);
}
}
+5 -1
View File
@@ -193,17 +193,21 @@
break;
case FRONTPAGECOURSELIST:
$ncourses = $DB->count_records('course');
if (isloggedin() and !$hassiteconfig and !isguestuser() and empty($CFG->disablemycourses)) {
echo html_writer::tag('a', get_string('skipa', 'access', moodle_strtolower(get_string('mycourses'))), array('href'=>'#skipmycourses', 'class'=>'skip-block'));
echo $OUTPUT->heading(get_string('mycourses'), 2, 'headingblock header');
print_my_moodle();
echo html_writer::tag('span', '', array('class'=>'skip-block-to', 'id'=>'skipmycourses'));
} else if ((!$hassiteconfig and !isguestuser()) or ($DB->count_records('course') <= FRONTPAGECOURSELIMIT)) {
} else if ((!$hassiteconfig and !isguestuser()) or ($ncourses <= FRONTPAGECOURSELIMIT)) {
// admin should not see list of courses when there are too many of them
echo html_writer::tag('a', get_string('skipa', 'access', moodle_strtolower(get_string('availablecourses'))), array('href'=>'#skipavailablecourses', 'class'=>'skip-block'));
echo $OUTPUT->heading(get_string('availablecourses'), 2, 'headingblock header');
print_courses(0);
echo html_writer::tag('span', '', array('class'=>'skip-block-to', 'id'=>'skipavailablecourses'));
} else {
echo html_writer::tag('div', get_string('therearecourses', '', $ncourses), array('class' => 'notifyproblem'));
print_course_search('', false, 'short');
}
break;
+1
View File
@@ -51,4 +51,5 @@ $string['pathssubdataroot'] = 'Тази директория е място, къ
$string['pathssubdirroot'] = 'Пълен път до директорията на Moodle.';
$string['pathssubwwwroot'] = 'Пълен интернет адрес, на който ще се отваря Moodle. Не е възможно Moodle да се отваря чрез различни адреси. Ако Вашият сайт има няколко адреса трябва на всеки от другите адреси да направите пренасочване към този. Ако Вашият сайт се отваря както глобално от Интернет, така и от локална мрежа, настройте DNS, така че потребителите от локалната мрежа също да могат да ползват глобалния адрес. Ако адресът не е коректен, моля, променете адреса в браузъра си и започнете инсталирането с правилния адрес.';
$string['phpextension'] = '{$a} разширение на PHP';
$string['phpversionhelp'] = '<p>Moodle изисква версия на PHP най-малко 4.3.0 или 5.1.0 (5.0.x има значителен брой известни проблеми).</p> <p>Вие използвате в момента версия {$a}</p> <p>Трябва да обновите PHP или да се преместите на нов хост (сървър) с по-нова версия на PHP!<br /> (В случая с 5.0.x може да опитате да инсталирате по-старата версия 4.4.x)</p>';
$string['wwwroot'] = 'Уеб адрес';
+33
View File
@@ -0,0 +1,33 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Automatically generated strings for Moodle installer
*
* Do not edit this file manually! It contains just a subset of strings
* needed during the very first steps of installation. This file was
* generated automatically by export-installer.php (which is part of AMOS
* {@link http://docs.moodle.org/dev/Languages/AMOS}) using the
* list of strings defined in /install/stringnames.txt.
*
* @package installer
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
$string['thislanguage'] = 'English for kids';
+3 -3
View File
@@ -48,12 +48,12 @@ $string['environmenthead'] = 'Comprobando su entorno';
$string['environmentsub2'] = 'Cada versión de Moodle tiene algún requisito mínimo de la versión de PHP y un número obligatorio de extensiones de PHP. Una comprobación del entorno completo se realiza antes de cada instalación y actualización. Por favor, póngase en contacto con el administrador del servidor si no sabe cómo instalar la nueva versión o habilitar las extensiones PHP.';
$string['errorsinenvironment'] = '¡La comprobación del entorno falló!';
$string['installation'] = 'Instalación';
$string['langdownloaderror'] = 'El idioma "{$a}" no pudo ser instalado. El proceso de instalación continuará en inglés.';
$string['langdownloaderror'] = 'El idioma "{$a}" no pudo ser instalado. El proceso de instalación continuará en Inglés.';
$string['memorylimithelp'] = '<p>El límite de memoria PHP en su servidor es actualmente {$a}.</p>
<p>Esto puede ocasionar que Moodle tenga problemas de memoria más adelante, especialmente si usted tiene activados muchos módulos y/o muchos usuarios.</p>
<p>Recomendamos que configure PHP con el límite más alto posible, e.g. 40M.
<p>Recomendamos que configure PHP con el límite más alto posible, por ejemplo: 40M.
Hay varias formas de hacer esto:</p>
<ol>
<li>Si puede hacerlo, recompile PHP con <i>--enable-memory-limit</i>.
@@ -85,7 +85,7 @@ $string['phpversionhelp'] = '<p>Moodle requiere al menos una versión de PHP 4.3
(En caso de 5.0.x podría también revertir a la versión 4.4.x)</p>';
$string['welcomep10'] = '{$a->installername} ({$a->installerversion})';
$string['welcomep20'] = 'Si está viendo esta página es porque ha podido ejecutar el paquete <strong>{$a->packname} {$a->packversion}</strong> en su computadora. !Enhorabuena!';
$string['welcomep30'] = 'Esta versión de <strong>{$a->installername}</strong> incluye las aplicaciones necesarias para que <strong>Moodle</strong> funcione en su computadora principalmente:';
$string['welcomep30'] = 'Esta versión de <strong>{$a->installername}</strong> incluye las aplicaciones necesarias para que <strong>Moodle</strong> funcione en su computadora, principalmente:';
$string['welcomep40'] = 'El paquete también incluye <strong>Moodle {$a->moodlerelease} ({$a->moodleversion})</strong>.';
$string['welcomep50'] = 'El uso de todas las aplicaciones del paquete está gobernado por sus respectivas
licencias. El programa <strong>{$a->installername}</strong> es
+1 -1
View File
@@ -32,4 +32,4 @@ defined('MOODLE_INTERNAL') || die();
$string['parentlanguage'] = '';
$string['thisdirection'] = 'ltr';
$string['thislanguage'] = 'Español - Mexico';
$string['thislanguage'] = 'Español - México';
+1 -1
View File
@@ -39,5 +39,5 @@ $string['clitypevaluedefault'] = 'sartu balorea, sakatu Enter-i berezko balorea
$string['cliunknowoption'] = 'Aukera ezezagunak:{$a}
Mesedez, erabili --laguntza aukera.';
$string['cliyesnoprompt'] = 'idatzi b (bai esateko) edo e (ez esateko)';
$string['environmentrequireinstall'] = 'derrigorrezkoa da instalatuta etagaituta izatea';
$string['environmentrequireinstall'] = 'derrigorrezkoa da instalatuta eta gaituta izatea';
$string['environmentrequireversion'] = '{$a->needed} bertsioa beharrezkoa da eta zu {$a->current} ari zara egikaritzen';
+33
View File
@@ -0,0 +1,33 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Automatically generated strings for Moodle installer
*
* Do not edit this file manually! It contains just a subset of strings
* needed during the very first steps of installation. This file was
* generated automatically by export-installer.php (which is part of AMOS
* {@link http://docs.moodle.org/dev/Languages/AMOS}) using the
* list of strings defined in /install/stringnames.txt.
*
* @package installer
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
$string['missingrequiredfield'] = 'بعضی از فیلدهای ضروری خالی است';
+2 -5
View File
@@ -33,7 +33,7 @@ defined('MOODLE_INTERNAL') || die();
$string['admindirname'] = 'Ylläpitohakemisto';
$string['availablelangs'] = 'Saatavilla olevat kielipaketit';
$string['chooselanguagehead'] = 'Valitse kieli';
$string['chooselanguagesub'] = 'Valitse kieli asennusohjelmaa varten. Tätä kieltä käytetään sivuston oletuskielenä. Voit valita muita kieliä käyttöösi myöhemmin.';
$string['chooselanguagesub'] = 'Valitse kieli asennusohjelmaa varten. Tätä kieltä käytetään sivuston oletuskielenä, jonka voi vaihtaa tarpeen mukaan. Myöhemmin voit myös lisätä käyttöön muitakin kieliä.';
$string['clialreadyconfigured'] = 'Tiedosto config.php on jo olemassa, käytä admin/cli/install_database.php -tiedostoa jos haluat asentaa tämän sivuston.';
$string['clialreadyinstalled'] = 'Tiedosto config.php on jo olemassa, ole hyvä ja käytä admin/cli/upgrade.php:ta jos haluat päivittää sivustosi';
$string['cliinstallheader'] = 'Moodlen {$a} komentoriviasennusohjelma';
@@ -82,10 +82,7 @@ $string['pathsunsecuredataroot'] = 'Dataroot-sijainti on turvallinen';
$string['pathswrongadmindir'] = 'Admin-hakemistoa ei ole';
$string['phpextension'] = '{$a} PHP-lisäosa';
$string['phpversion'] = 'PHP versio';
$string['phpversionhelp'] = '<p>Moodle vaatii vähintään PHP version 4.3.0 tai 5.1.0 (5.0.x -versiossa on joitakin tunnettuja ongelmia).</p>
<p>Käytät parhaillaan versiota {$a}</p>
<p>Sinun täytyy päivittää PHP tai siirtää asennus palvelimelle jossa on uudempi PHP-versio!<br>
(jos sinulla on versio 5.0.x, voit myös siirtyä versioon 4.4.x) </p>';
$string['phpversionhelp'] = '<p>Moodle vaatii vähintään PHP-version 4.3.0 tai 5.1.0 (5.0.x sisältää monia tunnettuja ongelmia).</p> <p>Käytössäsi on versio {$a}</p> <p>Sinun pitää päivittää PHP tai siirtää palvelimelle jossa on uudempi PHP.<br /> (Jos käytössäsi on 5.0.x voit myös päivittää alaspäin 4.4.x -versioon)</p>';
$string['welcomep10'] = '{$a->installername} ({$a->installerversion})';
$string['welcomep20'] = 'Näet tämän sivun koska olet onnistuneesti asentanut ja käynnistänyt <strong>{$a->packname} {$a->packversion}</strong> paketin tietokoneellasi.
Onnittelut!';
+1
View File
@@ -30,4 +30,5 @@
defined('MOODLE_INTERNAL') || die();
$string['thisdirection'] = 'ltr';
$string['thislanguage'] = 'Føroyskt';
+48
View File
@@ -0,0 +1,48 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Automatically generated strings for Moodle installer
*
* Do not edit this file manually! It contains just a subset of strings
* needed during the very first steps of installation. This file was
* generated automatically by export-installer.php (which is part of AMOS
* {@link http://docs.moodle.org/dev/Languages/AMOS}) using the
* list of strings defined in /install/stringnames.txt.
*
* @package installer
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
$string['cannotcreatelangdir'] = 'Ní féidir eolaire teanga a chruthú';
$string['cannotcreatetempdir'] = 'Ní féidir eolaire sealadach a chruthú';
$string['cannotdownloadcomponents'] = 'Ní féidir na comhphairteanna a íoslódáil';
$string['cannotdownloadzipfile'] = 'Ní féidir comhad ZIP a íoslódáil';
$string['cannotfindcomponent'] = 'Ní féidir teacht ar chomhpháirt';
$string['cannotsavemd5file'] = 'Ni féidir an comhad md5 a shábháil';
$string['cannotsavezipfile'] = 'Ni féidir an comhad ZIP a shábháil';
$string['cannotunzipfile'] = 'Ní féidir an comhad a dhízipeáil';
$string['componentisuptodate'] = 'Tá an chomhpháirt suas chun dáta';
$string['downloadedfilecheckfailed'] = 'Theip ar an seiceáil comhaid íoslódailte';
$string['invalidmd5'] = 'Bhí "an athróg seiceála mícheart triail arís é';
$string['missingrequiredfield'] = 'Réimse riachtanach ar iarraidh';
$string['remotedownloaderror'] = 'Theip ar íoslódail comhpháirte chuig do fhreastalaí, dearbhaigh seachshocruithe moltar iarmhíreanna , PHP cURL go hard.<br /"><br />Y Caithfidh tú an comhad <a href="""{$a->url}"">{$a->url}</a> a íoslódáil de láimh';
$string['wrongdestpath'] = 'Cosán sprice mícheart';
$string['wrongsourcebase'] = 'Foinse mícheart do bhunachar URL';
$string['wrongzipfilename'] = 'Ainm mícherat comhaid ZIP';

Some files were not shown because too many files have changed in this diff Show More