Compare commits

...

365 Commits

Author SHA1 Message Date
Eloy Lafuente (stronk7) 3e90b10ad8 Moodle release 2.4.1 2013-01-11 22:23:29 +01:00
Eloy Lafuente (stronk7) 8a646b55f7 weekly release 2.4+ 2013-01-11 12:33:57 +01:00
Eloy Lafuente (stronk7) 72cece6ff4 Merge branch 'install_24_STABLE' of git://git.moodle.cz/moodle-install into MOODLE_24_STABLE 2013-01-11 12:16:34 +01:00
Eloy Lafuente (stronk7) 9b7b6fa33c MDL-37420 rework pg schema (partial backport of 92b00c3) 2013-01-11 10:33:33 +01:00
Eloy Lafuente (stronk7) 43bfcff941 Merge branch 'MDL-37467-blogs_24' of git://github.com/mudrd8mz/moodle into MOODLE_24_STABLE 2013-01-10 18:20:48 +01:00
David Mudrák a4611b9d02 MDL-37467 Do not provide blog posts via RSS when blogging is disabled 2013-01-10 16:57:10 +01:00
Mark Nelson 5be009245b 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 11:13:45 +01:00
Andrew Robert Nicols a50bf852e4 MDL-36600 Add missing sesskey check when previewing the message 2013-01-10 10:20:45 +08:00
AMOS bot 9c3ef35763 Automatically generated installer lang files 2013-01-10 00:44:11 +00:00
Marina Glancy 562782a48d MDL-37404 add class 'format-xxx' to the body for the current course format 2013-01-09 14:35:31 +13:00
Eloy Lafuente (stronk7) b56324b829 Merge branch 'w51_MDL-37420_m24_pgschema' of git://github.com/skodak/moodle into MOODLE_24_STABLE 2013-01-09 01:32:33 +01:00
Andrew Robert Nicols 47ee76344e MDL-36600 user: improve course messaging checks 2013-01-09 09:22:08 +13:00
Eloy Lafuente (stronk7) 844cb63fed Merge branch 'w51_MDL-37152_m24_smtp' of git://github.com/skodak/moodle into MOODLE_24_STABLE 2013-01-08 18:02:37 +01:00
Petr Škoda a668f57e75 MDL-37420 add support for db schemas in enrol test 2013-01-08 17:35:59 +01:00
Petr Škoda 543fc34ed9 MDL-37420 add support for more PostgreSQL schemas 2013-01-08 17:35:51 +01:00
Jean-Michel Vedrine 0a32dca4bb MDL-28183 fix for problem during integration
Conflicts:
	question/type/multianswer/question.php
2013-01-08 12:05:45 +01:00
Eloy Lafuente (stronk7) 65a550c484 Merge branch 'MDL-37220_dnd_icon_24' of git://github.com/davosmith/moodle into MOODLE_24_STABLE 2013-01-08 11:54:31 +01:00
Eloy Lafuente (stronk7) 0f83a143b0 Merge branch 'w51_MDL-37186_m24_tinymceconfig' of git://github.com/skodak/moodle into MOODLE_24_STABLE 2013-01-08 10:34:15 +01:00
Eloy Lafuente (stronk7) 793c431543 Merge branch 'w51_MDL-37323_m24_dlgstrings' of git://github.com/skodak/moodle into MOODLE_24_STABLE 2013-01-08 10:22:15 +01:00
Dan Poltawski 2e25f806fb Merge branch 'MDL-32639-24' of git://github.com/FMCorz/moodle into MOODLE_24_STABLE 2013-01-08 14:46:25 +08:00
Petr Škoda f923f7aefe MDL-xxxx show appropriate instance status on user enrolments page 2013-01-08 14:22:28 +08:00
Jason Fowler cb838a36b2 MDL-36620 - Blog, RSS - Preventing Guests from viewing the RSS of site level blogs 2013-01-08 14:06:47 +08:00
Ankit Agarwal 56f4d0ed80 MDL-37106 calendar: Proper capability checks should be done before processing an ical request 2013-01-08 14:02:54 +08:00
Ankit Agarwal 6c806e8384 MDL-36738 calendar: Display events imported details
We should display a the status of events when a new subscription is added. Although this means we need to redirect through an itermediate page.
2013-01-08 13:58:21 +08:00
Ankit Agarwal 5b6e74c85f MDL-36738 calendar: Ical subscription list should display type of event 2013-01-08 13:58:21 +08:00
Dan Poltawski c33a96f676 MDL-28183 - fix trailing whitespace 2013-01-08 12:18:31 +08:00
Dan Poltawski 9910a5d7eb Merge branch 'MDL-28183_24' of git://github.com/jmvedrine/moodle into MOODLE_24_STABLE 2013-01-08 12:17:58 +08:00
Dan Poltawski 7c8fb69b1c Merge branch 'w51_MDL-37191_m24_plugindelete' of git://github.com/skodak/moodle into MOODLE_24_STABLE 2013-01-08 11:16:49 +08:00
Dan Poltawski ef42830b87 Merge branch 'MDL-31641_drag_drop_help_24' of git://github.com/davosmith/moodle into MOODLE_24_STABLE 2013-01-08 10:54:14 +08:00
Charles Fulton 05f8741cee MDL-35130 shibboleth: remove hard-coded string 2013-01-08 10:51:17 +08:00
Dan Poltawski 9a1ac11640 Merge branch 'MDL-36456-24' of git://github.com/FMCorz/moodle into MOODLE_24_STABLE 2013-01-08 10:30:58 +08:00
Dan Poltawski 04ab55dd4f Merge branch 'w51_MDL-37301_m24_coursecatinfoas' of git://github.com/skodak/moodle into MOODLE_24_STABLE 2013-01-08 10:27:00 +08:00
Dan Poltawski b2e3fb3dc9 Merge branch 'w51_MDL-37254_m24_courseinfoas' of git://github.com/skodak/moodle into MOODLE_24_STABLE 2013-01-08 10:24:11 +08:00
Sam Hemelryk d72a0aa2c8 Merge branch 'wip-mdl-36958-m24' of git://github.com/rajeshtaneja/moodle into MOODLE_24_STABLE 2013-01-08 14:06:50 +13:00
Sam Hemelryk 2be82d5e13 Merge branch 'w51_MDL-35893_m24_perfinstall' of git://github.com/skodak/moodle into MOODLE_24_STABLE 2013-01-08 14:00:23 +13:00
David Mudrák 019cc4eae4 MDL-36977 Be more picky when it comes to migrating files in moodle1 backups 2013-01-08 08:54:20 +08:00
David Mudrák 2726d2a6a4 MDL-36977 Add more unit tests for moodle1 backup conversion 2013-01-08 08:54:20 +08:00
Thanh Le 0c49b6c445 MDL-35794 quiz: config for whether Outcomes are advanced settings 2013-01-07 22:40:31 +01:00
Thanh Le 83a23ea878 MDL-35792 question preview: way to update options without restarting.
It is useful, and possible, to update the display options without
restarting the question. You now only have to restart if you are
changing the maximum mark or the behaviour.
2013-01-07 22:36:17 +01:00
Eloy Lafuente (stronk7) f849d1f6fc Merge branch 'w51_MDL-36807_m24_mysocket' of git://github.com/skodak/moodle into MOODLE_24_STABLE 2013-01-07 11:44:54 +01:00
Davo Smith 2e8da707a0 MDL-31641 filemanager - display help message when drag and drop upload is not supported 2013-01-07 08:14:13 +00:00
Didier Raboud f4537d5676 MDL-37157: Normalize short answers before comparison
This ensures that ambiguous Unicode representations can be compared sanely.
Also add some tests to ensure it keeps working.

Thanks to Tim Hunt for the syntax check.
2013-01-07 14:00:13 +08:00
Dan Poltawski 850aa189e4 Merge branch 'w51_MDL-37128_m24_rssrestore' of git://github.com/skodak/moodle into MOODLE_24_STABLE 2013-01-07 13:57:02 +08:00
Dan Poltawski c5e96ad32f Merge branch 'w51_MDL-36893_m24_mnetestrict' of git://github.com/skodak/moodle into MOODLE_24_STABLE 2013-01-07 13:53:19 +08:00
Dan Poltawski 9acc49eb93 Merge branch 'MDL-27884-m24' of git://github.com/ankitagarwal/moodle into MOODLE_24_STABLE 2013-01-07 13:30:34 +08:00
Damyon Wiese d389a2f7f4 MDL-37244 Assignment: Submission comments plugin does not implement comments callbacks.
This allows anyone to view or modify anyone elses submission comments.
2013-01-07 10:49:12 +08:00
Ankit Agarwal 321554d35f MDL-33340 completion: Incorrect logic in hidden field check
Credit to Jody Steele
2013-01-07 10:37:26 +08:00
Simon Coggins 102903f7ab MDL-35991 - use PARAM_LOCALURL for local urls 2013-01-07 10:10:22 +08:00
Dan Poltawski 181b7f5fea Merge branch 'MDL-36667-24' of git://github.com/damyon/moodle into MOODLE_24_STABLE 2013-01-07 09:44:59 +08:00
Sam Hemelryk e04f57c95b Merge branch 'MDL-37161-moodle24' of https://github.com/StudiUM/moodle into MOODLE_24_STABLE 2013-01-07 14:15:17 +13:00
Sam Hemelryk b9639c524d Merge branch 'w51_MDL-36212_m24_entities' of git://github.com/skodak/moodle into MOODLE_24_STABLE 2013-01-07 13:44:54 +13:00
Tim Hunt 56003ca491 MDL-37068 qformat_learnwise: fix UTF8 and other issues. 2013-01-07 13:40:24 +13:00
Sam Hemelryk 192cb8f894 Merge branch 'w51_MDL-37281_m24_othersnav' of git://github.com/skodak/moodle into MOODLE_24_STABLE 2013-01-07 13:35:04 +13:00
Sam Hemelryk 2d7c42275f Merge branch 'MDL-36855-m24' of git://github.com/ankitagarwal/moodle into MOODLE_24_STABLE 2013-01-07 12:05:07 +13:00
Charles Fulton ac41913cea MDL-4781 forum: show discussion link when user has ability to view discussion 2013-01-07 11:15:32 +13:00
Davo Smith 359c790b1c MDL-35887 course dndupload - correct default used for completion tracking when resources created by drag and drop 2013-01-07 11:07:37 +13:00
Sam Hemelryk 49a66d4b68 Merge branch 'MDL-16730-m24' of git://github.com/ankitagarwal/moodle into MOODLE_24_STABLE 2013-01-07 10:15:11 +13:00
Sam Hemelryk 1a5a5f8e9c Merge branch 'w51_MDL-37105_m24_catlimit' of git://github.com/skodak/moodle into MOODLE_24_STABLE 2013-01-07 09:52:50 +13:00
Mark Nelson 3735e3d289 MDL-37359 groups: fixing typo in the web service function create_groupings_parameters 2013-01-07 09:47:43 +13:00
Sam Hemelryk 2c6b79365b Merge branch 'MDL-29327_none_24' of git://github.com/andyjdavis/moodle into MOODLE_24_STABLE 2013-01-07 09:35:07 +13:00
Mark Nelson 1565171e07 MDL-36741 mod_forum: fixed SQL that was generated when either timed posts or groups were enabled 2013-01-07 09:16:35 +13:00
Sam Hemelryk 0c1be2af21 Merge branch 'w51_MDL-37315_m24_ldappaging' of git://github.com/skodak/moodle into MOODLE_24_STABLE 2013-01-07 09:09:25 +13:00
Jean-Philippe Gaudreau e5d70123c9 MDL-37161 Backup: Database error caused by grade book settings when importing or restoring a course 2013-01-04 09:54:42 -05:00
Damyon Wiese 3d6b1bf4e3 MDL-36712: Assignment - Do not always send feedback available emails when grade is created
The entry in the assign_grades table contains grades feedback and other settings such as locked.
Only send the student an email about new feedback if it is actually grades or feedback that
has been added. This is done by using another state for the mailed flag (2) which means "unset".
2013-01-04 14:52:14 +08:00
Andrew Davis b164a8904a MDL-29327 core_grade: removing some code that is messing up the categories and items screen when no grade categories are used 2013-01-04 08:58:34 +08:00
Ankit Agarwal 78ac8558e0 MDL-36855 scorm: update to api get_scorm_question_count()
get_scorm_question_count() should return 0 not 1 when no attempt is made in a scorm by any student
2013-01-03 14:42:39 +08:00
Ankit Agarwal 363ed37e76 MDL-27884 Implement proper username validation during csv import 2013-01-02 14:10:30 +08:00
Ankit Agarwal 3b800be056 MDL-27884 blocks: Correcting config title string
AMOS BEGIN
 CPY [configtitle,block_html],[configtitle,block_tags]
AMOS END
2013-01-02 10:56:58 +08:00
Petr Škoda ef227f1e0f MDL-35893 do not track performance before installation 2013-01-01 15:51:06 +01:00
Petr Škoda 6606784c3f MDL-37323 add support for _dlg strings in our TinyMCE subplugins
Credit goes to Étienne FLORENT, thanks.
2013-01-01 15:26:27 +01:00
AMOS bot a17b3a200e Automatically generated installer lang files 2013-01-01 00:42:59 +00:00
Eloy Lafuente (stronk7) d63a406b02 weekly release 2.4+ 2012-12-30 01:06:09 +01:00
Petr Škoda e6a3c6e1a1 MDL-37315 fix connection reopening in ldap paging 2012-12-30 00:58:20 +01:00
Eloy Lafuente (stronk7) 356513cc80 Merge branch 'install_24_STABLE' of git://git.moodle.cz/moodle-install into MOODLE_24_STABLE 2012-12-30 00:56:49 +01:00
Petr Škoda b1dc798512 MDL-36893 fix mnet E_STRICT issue 2012-12-27 14:33:09 +01:00
Petr Škoda 697871ddcf MDL-37105 prevent fatal error when category limit reached 2012-12-27 13:52:50 +01:00
Petr Škoda 602150068a MDL-37128 fix E_STRICT rss restore issue 2012-12-27 13:40:47 +01:00
AMOS bot eeeac779c8 Automatically generated installer lang files 2012-12-27 00:42:49 +00:00
Petr Škoda c0333c98ea MDL-37301 fix missing AS in select
This was breaking pg 8.3. Credit goes to Thomas Robb, thanks.
2012-12-26 22:31:47 +01:00
Damyon Wiese d59467dfc9 MDL-37037 Assignment Some minor refactoring of the previous patch
This just makes the control flow a bit easier to read.

I also added a continue button to take you back to the grading page.
2012-12-24 12:23:33 +08:00
Michael Aherne c731018d50 MDL-37037 assign Show message if no files to download 2012-12-24 12:23:33 +08:00
Dan Poltawski e17644cca3 Merge branch 'w51_MDL-37233_m24_skype' of git://github.com/skodak/moodle into MOODLE_24_STABLE 2012-12-24 11:34:45 +08:00
Dan Poltawski d71b142446 Merge branch 'wip-MDL-37263-m24' of git://github.com/samhemelryk/moodle into MOODLE_24_STABLE 2012-12-24 11:22:48 +08:00
Dan Poltawski b61dd8b299 Merge branch 'wip-MDL-37290-m24' of git://github.com/samhemelryk/moodle into MOODLE_24_STABLE 2012-12-24 10:55:24 +08:00
Dan Poltawski 41bbc35471 Merge branch 'w51_MDL-37283_m24_spell' of git://github.com/skodak/moodle into MOODLE_24_STABLE 2012-12-24 10:35:40 +08:00
Sam Hemelryk 0af4bf40ee MDL-37290 course: fixed up navbar when editing categories 2012-12-24 13:06:52 +13:00
Sam Hemelryk b09c5ac837 Merge branch 'wip-MDL-35833-stable24' of git://github.com/phalacee/moodle into MOODLE_24_STABLE 2012-12-24 11:43:46 +13:00
Raymond Wijaya 3f897939b2 MDL-36966 Assignment: Bug - Student submission appears graded by themselves.
Fix a bug when a student editing his submission after it has been graded, it changes the 'graded by' details to the student's name in the feeback summary
2012-12-24 11:18:43 +13:00
Sam Hemelryk 3124654247 Merge branch 'wip-mdl-37015-m24' of git://github.com/rajeshtaneja/moodle into MOODLE_24_STABLE 2012-12-24 10:55:19 +13:00
Sam Hemelryk 9a57563b9f Merge branch 'wip-MDL-35653-MOODLE_24_STABLE' of git://github.com/abgreeve/moodle into MOODLE_24_STABLE 2012-12-24 09:40:44 +13:00
Brian King 190b5e7cbe MDL-37225 reset cachstore_static store when purging 2012-12-24 09:36:13 +13:00
Mark Nelson a8f8537965 MDL-36455 blocks: removed ability to add blocks to the My Moodle page that did not make sense in that context 2012-12-24 09:31:02 +13:00
Petr Škoda f938b1a89b MDL-37283 import tinymce spellchecker 2.0.6.1 2012-12-22 16:45:22 +01:00
Petr Škoda 2a39a4e01c MDL-37281 fix other users current navigation node 2012-12-22 14:59:12 +01:00
Petr Škoda ab7d4ea7ba MDL-37152 remove bogus $mail->IsSMTP() breaking non-smtp mailing
Credit goes to Aurelijus Bruzas, thanks.
2012-12-22 14:48:25 +01:00
Petr Škoda ac4404e0cc MDL-37254 add missing AS keyword 2012-12-22 14:12:30 +01:00
Petr Škoda 0fe16db123 MDL-37233 do not show skype status icon on https sites
Funny that the same company that implemented the IE security warnings is unable to set up SSL on the Skype status server…
2012-12-21 17:27:12 +01:00
Petr Škoda 5c0dd1fadd MDL-37191 do not timeout when uninstalling plugins 2012-12-21 15:59:15 +01:00
Jean-Michel Vedrine a7eec81ec6 MDL-28183 add num parts correct and clear wrong to multianswer 2012-12-21 05:18:02 +01:00
Sam Hemelryk e03782efdd MDL-37263 cache: fixed event invalidation coding error 2012-12-21 10:50:24 +13:00
Petr Škoda eb2d6a23ab MDL-36212 rework html entity conversions
This should resolve all html entity conversion problems in different PHP versions.
2012-12-20 22:48:30 +01:00
Petr Škoda a48b376978 MDL-36807 use our mysql socket logic in adodb tests 2012-12-20 22:41:57 +01:00
Petr Škoda 544f0f9b11 MDL-37186 add the ultimate TinyMCE custom parameter setting 2012-12-20 22:24:46 +01:00
Eloy Lafuente (stronk7) 322af447f5 weekly release 2.4+ 2012-12-20 21:12:50 +01:00
Eloy Lafuente (stronk7) ec39bd51dd Merge branch 'install_24_STABLE' of git://git.moodle.cz/moodle-install into MOODLE_24_STABLE 2012-12-20 20:57:11 +01:00
Eloy Lafuente (stronk7) bbb750e1ba Merge branch 'w50_MDL-37171_m24_outdatedexcel' of git://github.com/skodak/moodle into MOODLE_24_STABLE 2012-12-20 10:41:55 +01:00
Jason Fowler 73dd2ee2d5 MDL-35833 - Blocks - Adding alt and title attributes to the docked-block panel close button 2012-12-20 10:28:23 +08:00
Rajesh Taneja a1ccc146ac MDL-37015 Resource: link in onclick should not contain html special char 2012-12-20 10:26:29 +08:00
Dan Poltawski 7a6f073415 Revert "MDL-36704: wrap pending conditions in span tags"
This reverts commit 5e9fd83df8.
2012-12-20 08:45:15 +08:00
AMOS bot 76fa287781 Automatically generated installer lang files 2012-12-20 00:40:36 +00:00
Tim Hunt 94c5a8fe82 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:28 +13:00
Petr Škoda d3fdafc358 MDL-37171 fix some more E_STRICT issues
Credit goes to Mark Nelson, thanks.
2012-12-19 09:55:25 +01:00
Davo Smith 606c07ae3e MDL-37220 course dndupload - improved 'add files' icon 2012-12-19 07:46:23 +00:00
Adrian Greeve c6b458edce 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:51:48 +08:00
Eloy Lafuente (stronk7) a8ccdd2880 Merge branch 'w50_MDL-36245_m24_convert' of git://github.com/skodak/moodle into MOODLE_24_STABLE 2012-12-18 23:42:53 +01:00
Marina Glancy 656581fa2c MDL-36339 Modify themes to add course headers and footers provided by course format 2012-12-18 21:37:05 +01:00
Matt Oquist 785a713b82 MDL-36958 Forum: Replaced hard-coded numbers with proper defines 2012-12-18 17:24:31 +08:00
Jay Knight cf04387947 MDL-36704: wrap pending conditions in span tags 2012-12-18 15:09:55 +08:00
Dan Poltawski eddec24752 Merge branch 'MDL-37014_webdav_folders_24' of git://github.com/davosmith/moodle into MOODLE_24_STABLE 2012-12-18 14:52:33 +08:00
Dan Poltawski f454c9884f MDL-36259 - change case of table alias to match definition 2012-12-18 14:27:40 +08:00
Thanh Le 53f7c0c641 MDL-36259 course short names: ensure it displays when enabled in admin
Fixed 5 Moodle pages that does not display the course short name even if "Display extended course names" setting is on.  In fixing this, search.php also included related minor code to change to minimise DB calls to improve performance.
2012-12-18 14:26:02 +08:00
Dan Poltawski 2de5b09d84 Merge branch 'MDL-30899_24' of git://github.com/dmonllao/moodle into MOODLE_24_STABLE 2012-12-18 09:11:02 +08:00
Damyon Wiese 70c31beef7 MDL-35740 Assignment: Change the assignment index page to use a renderer.
This also cleans up the patch to prevent students from seeing the number of submissions for the assignment.
2012-12-18 08:44:59 +08:00
Raymond Wijaya 901dd625f8 MDL-35740 Assignment: Hide the number of assignment submissions for all students that was visible to all students through the activities block 2012-12-18 08:44:59 +08:00
Tim Hunt 7d3341b000 MDL-36842 quiz: update accessrule upgrade.txt file in master. 2012-12-18 00:18:59 +01:00
Eloy Lafuente (stronk7) 1f60fe8a23 Merge branch 'w50_MDL-37171_m24_outdatedexcel' of git://github.com/skodak/moodle into MOODLE_24_STABLE 2012-12-18 00:13:55 +01:00
Sam Hemelryk 730271af49 Merge branch 'w50_MDL-36475_m24_zindexesgrrr' of git://github.com/skodak/moodle into MOODLE_24_STABLE 2012-12-18 10:42:49 +13:00
Sam Hemelryk 8a35efacd7 Merge branch 'MDL-36490_M24' of git://github.com/lazydaisy/moodle into MOODLE_24_STABLE 2012-12-18 10:40:32 +13:00
Adrian Fish cfa9c7e1d0 MDL-37035 Pass user locale after course locale. 2012-12-18 10:32:24 +13:00
Sam Hemelryk acb011dc20 Merge branch 'w50_MDL-37111_m24_forumsinglefirst' of git://github.com/skodak/moodle into MOODLE_24_STABLE 2012-12-18 10:24:42 +13:00
Sam Hemelryk a7a1adf4e0 Merge branch 'MDL-37176_24' of git://github.com/stronk7/moodle into MOODLE_24_STABLE 2012-12-18 10:12:22 +13:00
Rossiani Wijaya e60bae3575 MDL-35530 Lesson Module: Add question text to facilitate grading 2012-12-18 10:08:53 +13:00
Sam Hemelryk ddb5fb5980 Merge branch 'wip-MDL-35056-stable24' of git://github.com/phalacee/moodle into MOODLE_24_STABLE 2012-12-18 09:57:11 +13:00
Tim Hunt b70a545c88 MDL-32245 question bank: fix coding style in categories.php 2012-12-18 09:52:30 +13:00
Thanh Le c383f33bbf MDL-32245 question bank: fix moving categories between contexts. 2012-12-18 09:52:30 +13:00
Sam Hemelryk 13683200d6 MDL-36812 grader_report: Fixed whitespace on integration 2012-12-18 09:48:01 +13:00
Nadav Kavalerchik 7be97bd89d 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:01 +13:00
Sam Hemelryk cd281ce1b4 Merge branch 'MDL-29733_master' of git://github.com/andyjdavis/moodle into MOODLE_24_STABLE 2012-12-18 09:42:41 +13:00
David Monllao adc1d7b2a5 MDL-30899 moodle-core-notification Overridding default footer padding 2012-12-17 16:27:30 +08:00
David Monllao b4454b133f MDL-30899 moodle-core-notification Adding ARIA attributes 2012-12-17 16:27:08 +08:00
David Monllao 520a601f14 MDL-30899 moodle-core-notification Adding close button title for accessibility 2012-12-17 16:27:01 +08:00
David Monllao 0409483d5f MDL-30899 moodle-core-notification Adding focus to non modal windows 2012-12-17 16:26:56 +08:00
David Monllao 2d07933c17 MDL-30899 moodle-core-notification Adding H1 to notifications headers 2012-12-17 16:26:43 +08:00
David Monllao 6eabdb6d8c MDL-30899 block_community Changing from overlay to panel references 2012-12-17 16:26:09 +08:00
David Monllao 291455cecd MDL-30899 modchooser Changing from overlay to panel references 2012-12-17 16:26:03 +08:00
David Monllao b76204d589 MDL-30899 moodle-core-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, now it uses the Y.Panel close button
2012-12-17 16:25:51 +08:00
Dan Poltawski e8e9393e76 Merge branch 'w50_MDL-36493_m24_mysql' of git://github.com/skodak/moodle into MOODLE_24_STABLE 2012-12-17 15:29:07 +08:00
Joseph Rezeau 231f758404 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-17 15:26:07 +08:00
Andrew Davidson e92d664dd2 MDL-37034 - Added appropriate name to category settings navigation node 2012-12-17 15:21:57 +08:00
Dan Poltawski 973fe984cd Merge branch 'w50_MDL-36597_m24_courselang' of git://github.com/skodak/moodle into MOODLE_24_STABLE 2012-12-17 13:53:06 +08:00
Mark Nelson 4548df3155 MDL-29334 mod_data: if site-wide presets created in <= 1.9 exist convert them to 2.x 2012-12-17 13:48:15 +08:00
Rajesh Taneja c874cee03a MDL-36736 course: Availability information should not be visible for hidden modules
If user is viewing hidden module, availability information should only be visible to
user when editing and module is visible. If editing and module is hidden, then hide
availablilty information as it's invalid.
When user is not editing and activity is hidden then don't add availability information.
2012-12-17 12:09:30 +08:00
Rajesh Taneja caeb7f90b0 MDL-36736 course: Availability information will use hide class for hidding 2012-12-17 12:09:30 +08:00
Dan Poltawski da264959f2 Merge branch 'wip-MDL-25928-m24' of git://github.com/samhemelryk/moodle into MOODLE_24_STABLE 2012-12-17 12:05:12 +08:00
Dan Poltawski 41e1109c5f Merge branch 'wip-MDL-35874-stable24' of git://github.com/phalacee/moodle into MOODLE_24_STABLE 2012-12-17 11:52:59 +08:00
Dan Poltawski 209b2f7b3e Merge branch 'wip-MDL-35979-s24' of git://github.com/phalacee/moodle into MOODLE_24_STABLE 2012-12-17 11:48:39 +08:00
Dan Poltawski 503325ddcb Merge branch 'MDL-37078-m24' of git://github.com/sammarshallou/moodle into MOODLE_24_STABLE 2012-12-17 11:37:02 +08:00
Damyon Wiese 41575c5571 MDL-37165 Assignment: Oracle fix for count_submissions_with_status (and friends).
Oracle does not like the use of AS after a join.
2012-12-17 11:31:31 +08:00
Sam Hemelryk 73f60c1886 MDL-25928 course: Fixed course info on the combo list to be a popup 2012-12-17 16:03:34 +13:00
Petr Škoda dc7c91ae67 MDL-37171 fix multiple spreadsheet related PHP4isms 2012-12-15 12:38:12 +01:00
Petr Škoda 15dbd27efa MDL-36245 add tests for the buggy utf-8 to utf-8 conversion 2012-12-15 11:50:44 +01:00
Petr Škoda 9a05bd0f8f MDL-36245 try to workaround buggy iconv() when converting text from utf-8 to utf-8 2012-12-15 11:50:43 +01:00
Petr Škoda 524e1ce789 MDL-36475 tweak zIndexes once more
The expected ranges are now:
* 0-1000 for normal code
* 5000-5999 for TinyMCE
* 7000-8999 for filepicker and filemanager

This patch fixes also incorrect location of "MDL-25736 - French spellchecker fixes." modification reminder.
2012-12-15 11:47:16 +01:00
Petr Škoda 3d4de0bc4e MDL-36493 improve timeout handling in mysql upgrade
Credit goes to Mark Nielsen, thanks.
2012-12-15 11:44:18 +01:00
Petr Škoda 1264dd11a0 MDL-36493 improve performance of mysql unsigned/lob upgrade 2012-12-15 11:44:18 +01:00
Petr Škoda 599e7fe006 MDL-37111 copy first post files in single type forum using intro options
This patch also removed the delete button from the first post in single
discussion type forum.

Edit button in the first post leads to the forum edit page now, this should
prevent other problems throwing first post and intro out of sync.
2012-12-15 11:24:16 +01:00
Petr Škoda b768c6f77a MDL-36597 strip '_utf8' from all course.lang fields 2012-12-15 11:16:12 +01:00
Eloy Lafuente (stronk7) 4651e4e464 MDL-37176 timezones: updated to 2012j 2012-12-14 20:08:19 +01:00
Eloy Lafuente (stronk7) 4c7e6ea021 weekly release 2.4+ 2012-12-14 13:31:08 +01:00
Frederic Massart 46b0673732 MDL-36456 repository: S3 handles errors in a nicer way 2012-12-14 17:57:19 +08:00
Damyon Wiese 9c2d41fce2 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 10:32:23 +01:00
Jason Fowler c5148e0ab6 MDL-35874 - Blocks - Adding a label to the 'Add a block' block's select field 2012-12-13 15:09:45 +08:00
Jason Fowler 8bd65e7aaa 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:10:56 +08:00
Tim Hunt 4dbdc18fd8 MDL-36897 quiz review: fixup previous commit. 2012-12-13 09:54:28 +08:00
sam marshall 9789d825c2 MDL-37078: Restore - section restore fails with multiple availability conditions 2012-12-12 12:15:41 +00:00
Davo Smith 8f0019214e MDL-37014 repository_webdav - strip the server URL from file & folder paths returned by webdav lib (if present) 2012-12-12 08:55:17 +00:00
Frederic Massart 45cff73a1b MDL-32639 files: Zipping a folder does not overwrite existing files 2012-12-12 14:50:10 +08:00
Frederic Massart aa0cd4a7ef MDL-32639 files: Improved File Manager download and zip support
Conflicts:

	lib/filestorage/zip_packer.php
2012-12-12 14:50:10 +08:00
Vadim Dvorovenko 785e3deb4d MDL-32639 files: Removing '0' start folder in archives created with filemanager
Signed-off-by: Vadim Dvorovenko <vadimon@mail.ru>

Conflicts:

	lib/filestorage/zip_archive.php
2012-12-12 14:43:45 +08:00
Sam Hemelryk 7a4b7c5e18 MDL-33448 enrol_manual: Reduced JS get_string calls for the yui widget 2012-12-12 09:37:36 +08:00
Sam Hemelryk dc5c56e90c MDL-33448 enrol_manual: Reordered things to improve JS performance when enrolling users 2012-12-12 09:37:36 +08:00
Cathal O'Riordan 26679bee33 MDL-36644 Assignment: prepend the course upload limit to the options array
Ensure that the course upload limit is the first option in the list of available choices for the Maximum submission size select.
2012-12-12 08:57:13 +08:00
Dan Marsden 1076d79905 MDL-35737 SCORM: when scorm_parse is called and external scorm manifest use always update the package. 2012-12-12 08:44:00 +08:00
Paul Nicholls 0034f04164 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-12-12 11:10:35 +13:00
Paul Nicholls 1ff2b56319 MDL-32880: Add moodle1 backup converter for rss_client block.
Creates a shell rss_client.xml file, which contains no feeds.  This makes it behave the same as restoring a Moodle 1.9 backup into a different 1.9 site - the block is created, its title is as per the original course, but it has no feeds selected (and none are added to the site's feed list).
2012-12-11 22:49:13 +01:00
Paul Nicholls 4d9b4e9782 MDL-32880: Add moodle1 backup converter for html block.
This converter processes the HTML block's content, migrating any referenced files.
2012-12-11 22:49:05 +01:00
Paul Nicholls f51fdc9bb7 MDL-32880: moodle1 backup converter: add generic block handler
This handler will automatically be used for any block which does not provide its own handler, and should be subclassed by any block which needs to do anything extra (or different).

This commit incorporates contributions from Mike Churchward and API design suggestions from David Mudrak.
2012-12-11 22:48:54 +01:00
Matteo Scaramuccia f1c403dcec MDL-36641 Missing HTTP check when using an external resource 2012-12-11 22:42:42 +01:00
Sam Hemelryk ab1f9aa3a4 MDL-29805 redirect: added check REQUIRE_CORRECT_ACCESS is true 2012-12-12 09:46:55 +13:00
Sam Hemelryk 1ce6bdd1dd Merge branch 'MDL-29805-24' of git://github.com/mouneyrac/moodle into MOODLE_24_STABLE 2012-12-12 09:45:17 +13:00
Jerome Mouneyrac e20e67161c MDL-35593 core_webservice_get_site_info returns version number set to PARAM_TEXT and PARAM_FLOAT 2012-12-12 09:39:04 +13:00
Sam Hemelryk c545dcad4f Merge branch 'wip_24_mdl-37088_bad_operator_ldap_sync_user' of https://github.com/iarenaza/moodle into MOODLE_24_STABLE 2012-12-12 09:34:44 +13:00
Sam Hemelryk 9e9dd64c35 Merge branch 'MDL-36321_message_participants_24' of git://github.com/andyjdavis/moodle into MOODLE_24_STABLE 2012-12-12 09:29:12 +13:00
Damyon Wiese c6c7a7be8c 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 19:57:57 +01:00
Eloy Lafuente (stronk7) e958133ca6 MDL-37032 upgrade: define all the 2.4.0 points 2012-12-11 13:12:03 +01:00
Dan Poltawski 9261144beb Merge branch 'w49_MDL-36447_m24_gdtest' of git://github.com/skodak/moodle into MOODLE_24_STABLE 2012-12-11 17:54:37 +08:00
Tim Hunt 71cc181bac MDL-37098 quiz: event handler fails deleting group with no overrides
This was a regression from MDL-35717.
2012-12-11 17:52:04 +08:00
Jean-Michel Vedrine cf617e112f MDL-36243 question->questiontext and question->generalfeedback should always be strings 2012-12-11 16:24:24 +08:00
Dan Poltawski 865485fc54 Merge branch 'wip-MDL-36108-stable24' of git://github.com/phalacee/moodle into MOODLE_24_STABLE 2012-12-11 16:03:34 +08:00
Jason Fowler a595b4dacb 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:50:31 +08:00
Dan Poltawski 7c431a345f Merge branch 'wip-MDL-36938-m24' of git://github.com/samhemelryk/moodle into MOODLE_24_STABLE 2012-12-11 15:19:08 +08:00
Damyon Wiese 4dbc9b0a64 MDL-36712: Assignment grading with custom scale is affected by the current language 2012-12-11 14:01:01 +08:00
Damyon Wiese 9242214612 MDL-36591 Assignment - rewrite image urls in online text summaries 2012-12-11 13:56:58 +08:00
Tim Hunt 4832c70022 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-12-11 13:54:47 +08:00
Andrew Robert Nicols 54fdd4c0e9 MDL-34791 AJAX Update a graded activity's title in the gradebook on rename 2012-12-11 13:22:56 +08:00
sam marshall 0324045e4f MDL-36808 Completion: Incorrect escaping for activity name in completion tickbox 2012-12-11 12:19:32 +08:00
Dan Poltawski fac9ba991b Merge branch 'w49_MDL-36983_m24_ordertext' of git://github.com/skodak/moodle into MOODLE_24_STABLE 2012-12-11 12:09:34 +08:00
Dan Poltawski ae5ecea065 Merge branch 'w49_MDL-36892_m24_enrolreadme' of git://github.com/skodak/moodle into MOODLE_24_STABLE 2012-12-11 12:07:13 +08:00
Tim Hunt 6357dd08b6 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-12-11 11:59:20 +08:00
Adam Olley c15b286f88 MDL-36828: mod_scorm: Allow deletion of scorm modules if no scorm_scoes data exists 2012-12-11 11:44:24 +08:00
Dan Poltawski 4afa0b50c7 Merge branch 'wip-MDL-36110-s24' of git://github.com/phalacee/moodle into MOODLE_24_STABLE 2012-12-11 11:33:14 +08:00
Dan Poltawski b90b9b83bd Merge branch 'wip-MDL-35884-s24' of git://github.com/phalacee/moodle into MOODLE_24_STABLE 2012-12-11 11:17:33 +08:00
Tim Hunt 79bf1e37ca MDL-36650 don't change question timecreated or timemodified on restore. 2012-12-11 16:11:17 +13:00
Matt Petro 95ae9d9e5e MDL-36025 qtype calculated: Fix handling of "-0" 2012-12-11 11:07:24 +08:00
Sam Hemelryk 7027fe4538 Merge branch 'w49_MDL-36731_m24_uploadestrict' of git://github.com/skodak/moodle into MOODLE_24_STABLE 2012-12-11 16:04:19 +13:00
Damyon Wiese 50f3d7b5ea MDL-35476 Assignment: Make submissions_open public so it can be used by plugins 2012-12-11 10:49:30 +08:00
Rossiani Wijaya 22fc0c5e9b MDL-36905 accessibility for assignment grading: add label for grading actions and operations select options 2012-12-11 15:44:57 +13:00
Sam Hemelryk 6ff1745873 Merge branch 'MDL-36916' of git://github.com/timhunt/moodle into MOODLE_24_STABLE 2012-12-11 15:42:08 +13:00
Luke Tucker 505530eaf5 MDL-34052 assignment - Disable submission and feedback plugins based on assign type when upgrading 2012-12-11 10:39:32 +08:00
Sam Hemelryk a2630c08ae Merge branch 'w49_MDL-36936_m24_composerdev' of git://github.com/skodak/moodle into MOODLE_24_STABLE 2012-12-11 15:35:04 +13:00
Dan Poltawski fddbdb79db Merge branch 'w49_MDL-31424_m24_paypalcase' of git://github.com/skodak/moodle into MOODLE_24_STABLE 2012-12-11 10:31:36 +08:00
Sam Hemelryk 1c90b9976d Merge branch 'w49_MDL-37060_m24_sessinit' of git://github.com/skodak/moodle into MOODLE_24_STABLE 2012-12-11 15:27:14 +13:00
Sam Hemelryk 35cb0e4a4c Merge branch 'MDL-36942' of git://github.com/timhunt/moodle into MOODLE_24_STABLE 2012-12-11 15:04:22 +13:00
Sam Hemelryk ada098890b Merge branch 'MDL-36954' of git://github.com/timhunt/moodle into MOODLE_24_STABLE 2012-12-11 15:00:00 +13:00
Jerome Mouneyrac 2e8b836243 MDL-36773 timezone inconsistency => some number support decimal other don\'t - Original patch author: Nathan Mares 2012-12-11 09:57:22 +08:00
Sam Hemelryk b004c163ee Merge branch 'wip-mdl-37017-m24' of git://github.com/rajeshtaneja/moodle into MOODLE_24_STABLE 2012-12-11 14:53:49 +13:00
Sam Hemelryk 6d0c04c208 Merge branch 'w49_MDL-37061_m24_invalidlang' of git://github.com/skodak/moodle into MOODLE_24_STABLE 2012-12-11 14:44:21 +13:00
Andrew Davis 415b15ccd6 MDL-29733 grade: SQL and comment cleanup 2012-12-11 09:15:31 +08:00
Jonathan Champ 8a592bd551 MDL-29733 grade: Query for Identifying Grade Grades to Precreate is SLOW 2012-12-11 09:15:31 +08:00
Andrew Davis 29a7d7a1c1 MDL-36321 core_message: made the course participants list correctly show if course participants are contacts or not 2012-12-11 08:55:16 +08:00
Sam Hemelryk eda1d3f37a Merge branch 'w49_MDL-29442_m24_entityutf8' of git://github.com/skodak/moodle into MOODLE_24_STABLE 2012-12-11 10:22:06 +13:00
Damyon Wiese 6466396f38 MDL-36263 Assignment: Do not count submissions of unenrolled users 2012-12-11 10:12:26 +13:00
Damyon Wiese 5b2313c26c MDL-36908 Assignment: Additional fixes for preventing empty submissions 2012-12-11 10:12:23 +13:00
Charles Fulton 473eadfe10 MDL-37020 auth_shibboleth: check if target variable is actually set 2012-12-11 09:48:41 +13:00
Sam Hemelryk 52d4168038 Merge branch 'MDL-36601-master' of git://git.luns.net.uk/moodle into MOODLE_24_STABLE 2012-12-11 09:42:29 +13:00
Sam Hemelryk c6bd16545e Merge branch 'MDL-36805-master' of git://git.luns.net.uk/moodle into MOODLE_24_STABLE 2012-12-11 09:16:43 +13:00
Adrian Greeve 517a2dbe84 MDL-37011 - themes: Fixed the alignment of the edit and help icon on the participants page. 2012-12-11 08:43:19 +13:00
Iñaki Arenaza 88d48cd51f MDL-37088 auth_ldap: bad operator in ldap sync_user() method 2012-12-10 16:51:49 +01:00
Dan Poltawski a5ff28cc9f MDL-36755 course_overview block: fix for fix.
I will stop commiting now.
2012-12-10 19:44:26 +08:00
Dan Poltawski 1b2cf98bb0 MDL-36755 course_overview block: fix idiot version
I will shoot the programmer responsible for this mess.
2012-12-10 19:42:29 +08:00
Dan Poltawski 86e28894f4 Merge branch 'w49_MDL-36737_m24_glossstrict' of git://github.com/skodak/moodle into MOODLE_24_STABLE 2012-12-10 19:37:31 +08:00
Dan Poltawski c125bb553d Merge branch 'MDL-36755_master' of git://github.com/markn86/moodle into MOODLE_24_STABLE
Conflicts:
	blocks/course_overview/version.php
2012-12-10 19:33:21 +08:00
Dan Poltawski 4ac455d9a4 MDL-36167 fix trailing whitespace 2012-12-10 17:36:31 +08:00
Damyon Wiese 3b7a18f2e5 MDL-36167: Assignment quickgrading fix when there is no grade (ensure feedback still saves)
This patch modifies the previous on by Luke Tucker so that the lastmodified hidden field
is always added to the quickgrading form even if there is no grade for the assignment. This
ensures that the lastmodified checks still work (to prevent teachers overwriting each
others feedback) and feedback is saved when there is no grade.
2012-12-10 17:36:31 +08:00
Luke Tucker a13a1707bc MDL-36167: Update all users in assignment quickgrade form to ensure feedback is saved 2012-12-10 17:36:30 +08:00
Tim Hunt 6812769f8f MDL-36732 Cloze qtype: review marks should not depend on feedback.
The various review options should be independent.
2012-12-10 15:18:14 +08:00
Rossiani Wijaya 2f860b4ded MDL-36549 Lesson module: fixed strict standards errors 2012-12-10 14:18:55 +08:00
Kirill Astashov d84c21dfcc MDL-36856: Fix method name misspelled in two places in mod_assign 2012-12-10 14:04:37 +08:00
Damyon Wiese 0e3c1231da MDL-36835 Assignment: Do not show javascript warning when toggling quickgrading 2012-12-10 14:02:14 +08:00
Dan Poltawski 71e8ee1c33 Merge branch 'MDL-36538_webdav_memory_24' of git://github.com/davosmith/moodle into MOODLE_24_STABLE 2012-12-10 13:13:03 +08:00
Dan Poltawski 8938f0848e Merge branch 'w49_MDL-35456_m24_paypal' of git://github.com/skodak/moodle into MOODLE_24_STABLE 2012-12-10 12:03:23 +08:00
Tim Hunt 0e73e16460 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-12-10 11:37:17 +08:00
Dan Poltawski 9321379b10 Merge branch 'wip-MDL-36939-m24' of git://github.com/samhemelryk/moodle into MOODLE_24_STABLE 2012-12-10 11:08:51 +08:00
Jerome Mouneyrac c91c7fcded MDL-30961 get_course_contents: returned activity name should not be check against PARAM_TEXT, it could be anything 2012-12-10 15:00:00 +13:00
Andrew Davis 0663096dc6 MDL-36680 core_grade: fixed grade_report::blank_hidden_total() and added unit tests 2012-12-10 09:56:45 +08:00
Michael Aherne 7a9e253405 MDL-36946 theme Use server default theme before standard 2012-12-10 14:43:56 +13:00
Sam Hemelryk 5e6b64571c Merge branch 'MDL-34592_M24' of git://github.com/lazydaisy/moodle into MOODLE_24_STABLE 2012-12-10 14:28:33 +13:00
Sam Hemelryk c446a0fca2 Merge branch 'MDL-36608_M24' of git://github.com/lazydaisy/moodle into MOODLE_24_STABLE 2012-12-10 14:24:18 +13:00
Sam Hemelryk 07f89a017c Merge branch 'MDL-36978_M24' of git://github.com/lazydaisy/moodle into MOODLE_24_STABLE 2012-12-10 14:21:25 +13:00
Sam Hemelryk b8b1926e2f Merge branch 'MDL-36579_modLtiBackupFields' of git://github.com/moodlerooms/moodle into MOODLE_24_STABLE 2012-12-10 14:15:54 +13:00
Mark Nielsen 4d5970ea63 MDL-36607: Improve block drag and drop
* Adding support for subpage
* Adding support for regions that do not start with "side-"
2012-12-10 14:12:50 +13:00
Mark Nelson 656cea20a6 MDL-35954 javascript: prevent JS from being triggered on select box by clicking on already selected option 2012-12-10 14:08:52 +13:00
Mary Evans e9f8261131 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-09 23:32:04 +00:00
Itamar Tzadok d87a55fc2b MDL-36433 Forms lib - Added dash escaping to validation script getter. 2012-12-10 12:13:54 +13:00
Dan Poltawski b0c87306a6 MDL-36764 ddl/oracle: fix misleading comment 2012-12-10 11:54:28 +13:00
Dan Poltawski 38ab68e6ab MDL-36778 course - prevent undefined index warnings
When logged in as a guest the mform didn't set userid.
2012-12-10 11:51:57 +13:00
Dan Poltawski 0e7cadca03 MDL-36887 quiz: reorder upgrade.txt's 2012-12-10 11:49:03 +13:00
Andrew Robert Nicols efd08cdc2b 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-12-10 11:43:35 +13:00
Andrew Robert Nicols 7e61737f3d MDL-36918 Decode HTML entities on ajax update title 2012-12-10 11:15:55 +13:00
Andrew Davis 138025470f MDL-36162 core_message: string clean up 2012-12-10 11:04:18 +13:00
Andrew Davis 8b72167d0e MDL-36162 core_message: removed the unnecessary and confusing course URL parameter as well as fixing the broken breadcrumb 2012-12-10 11:04:13 +13:00
Andrew Davis f92305bfa9 MDL-36761 core_grade:shifted a call to count() out of a loop 2012-12-10 10:54:43 +13:00
Sam Hemelryk 0b4767ca50 Merge branch 'MDL-34591_24' of git://github.com/grabs/moodle into MOODLE_24_STABLE 2012-12-10 10:48:59 +13:00
Kevin Wiliarty 1c50e53a05 MDL-35221 mod_feedback: replace checkbox with advcheckbox for all requirable feedback question types 2012-12-10 10:41:48 +13:00
Adrian Greeve a3301036d6 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-12-10 10:34:29 +13:00
Adrian Greeve c7a34ab704 MDL-36915 - mod/data: A database with no entries no longer displays the export to portfolio button. 2012-12-10 10:27:42 +13:00
Sam Hemelryk 1b696de61b Merge branch 'wip-MDL-37026-MOODLE_24_STABLE' of git://github.com/abgreeve/moodle into MOODLE_24_STABLE 2012-12-10 10:23:44 +13:00
Adam Olley f4d4c73899 MDL-33125: core_backup: Prevent import/activity duplication from duplicating manual grade items 2012-12-10 10:20:03 +13:00
Petr Škoda da0cf7f883 MDL-36447 skip file preview test if GD not available 2012-12-09 19:22:36 +01:00
Andreas Grabs 7c3f70812e MDL-34591 - paypal does not allow unenrol 2012-12-09 19:10:26 +01:00
Mary Evans f5eabd12db MDL-36490 theme_standard: reduces the 15px radius down to 3px in style/css3.css for .generalbox objects 2012-12-09 18:05:03 +00:00
Mary Evans db1dd3e550 MDL-36608 theme_sky_high: Fixes missing background in sdmin pages by removing incorrect CSS in style/admin.css 2012-12-09 17:44:37 +00:00
Petr Škoda f48902e139 MDL-29442 add missing utf-8 to entity html encoding and decoding 2012-12-09 18:22:16 +01:00
Petr Škoda 7b03292e24 MDL-37061 always validate lang when setting session user
This should resolve problems with TinyMCE langs and some unknown MUCH caching issue.
2012-12-09 11:30:05 +01:00
Mary Evans 2a6e3435d0 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:50:33 +00:00
Petr Škoda 0411eed2cb MDL-36737 fix random glossary E_STRICT issue 2012-12-08 14:44:49 +01:00
Petr Škoda 365ef195b5 MDL-31424 compare PayPal emails case-insensitively
Credit goes to Chris Follin, thanks!
2012-12-08 13:17:10 +01:00
Petr Škoda 8c3547554b MDL-37060 prevent notice in session_get_instance() 2012-12-08 12:31:40 +01:00
Petr Škoda 324efa55e3 MDL-35456 use HTTP 1.1 for PayPal IPN 2012-12-08 11:58:43 +01:00
Eloy Lafuente (stronk7) 0b7c52dd4c weekly release 2.4+ 2012-12-08 02:56:23 +01:00
Petr Škoda cf31390c6f MDL-36936 require phpunit as composer --dev only 2012-12-07 18:20:42 +01:00
Petr Škoda 5af62aa90a MDL-36892 delete outdated enrol info 2012-12-07 17:16:28 +01:00
Davo Smith cf839b4396 MDL-36538 repository_webdav - save files directly to local filesystem, rather than buffering in memory 2012-12-07 09:19:21 +00:00
Jason Fowler 257a5d1299 MDL-35884 - Course - Remove text from ALT attribute for activity chooser 2012-12-07 13:52:32 +08:00
Rajesh Taneja e6d4708fcf MDL-37017 My Moodle: Course name should be fullname of course 2012-12-07 11:58:07 +08:00
Sam Hemelryk f9870842bd MDL-36939 cache: instance form validation now handles errors properly 2012-12-07 08:37:03 +13:00
Sam Hemelryk 2d7173d0c7 MDL-36938 cache: test performance script checks requirements now 2012-12-07 08:36:56 +13:00
Petr Škoda 4682fc7c38 MDL-36983 fix incorrect test method name
Credit goes to David Scotson, thanks.
2012-12-06 15:32:46 +01:00
Petr Škoda 15a77653e4 MDL-36731 fix E_STRICt issue when creating new groups in user upload 2012-12-06 13:15:41 +01:00
Dan Poltawski 9b1f784178 Merge branch 'wip-MDL-36960-m24' of git://github.com/amygroshek/moodle into MOODLE_24_STABLE 2012-12-06 12:04:08 +08:00
Adrian Greeve 44bfbe1e15 MDL-37026 - lib: The function user_can_assign() returns true for admins. 2012-12-06 11:04:34 +08:00
Dan Poltawski 0c767bf6cc Merge branch 'MDL-36963-deployment-backup_24' of git://github.com/mudrd8mz/moodle into MOODLE_24_STABLE 2012-12-06 10:57:13 +08:00
David Mudrák 81c89dd705 MDL-36963 Do not attempt to remove the root folder of a plugin during the update deployment
There is no need to move the root folder of a plugin during the update
deployment. We just need to operate with its contents. So the web server
process can have the write access for the plugin folder only.
2012-12-06 02:45:16 +01:00
David Mudrák b46ee168ef MDL-36963 Add unit tests for directory operations in mdeploy.php 2012-12-06 02:45:16 +01:00
David Mudrák e399d32694 MDL-36963 Improve mdeploy worker::remove_directory() method
The additional parameter allows to use this method without actual
removing the root of the path. That is, it is now possible to remove
the content of a folder only.
2012-12-06 02:35:22 +01:00
David Mudrák 606e2c8ebe MDL-36963 Improve mdeploy worker::move_directory() method
The additional parameter allows to use this method without actual
removing the root of the source location. That is, it is now possible to
move the content of a folder only.

Also, a small refactoring happened here as we will need a variant of
this method that does not throw exception if the target already exists.
2012-12-06 02:31:36 +01:00
Sam Hemelryk c6e0d385c3 MDL-36341 calendar: fixed JS bug with popup node setter 2012-12-06 02:25:14 +01:00
David Mudrák 31a3bcc933 MDL-37003 Fix repeated line in update notification email
There was a problem experienced after 2.4.0 release because the version
of the 2.4.0 release was the same as 2.5dev release. So the version
value matched twice in the loop and the line was repeated in the email.
2012-12-06 01:50:32 +01:00
David Mudrák acade5443f MDL-36943 Do not notify about already installed updates
Before this patch, the available_update_checker::cron_notifications()
method accessed the availableupdates property. But for plugins, that property
basically contains the most recent version available. So we were missing
the check against the actual version installed.

The fix was simple - obtain available updates via the available_updates()
method that performs the check.
2012-12-06 01:50:21 +01:00
Marina Glancy 113105bf9c MDL-36840 Set course.format to 'site' for site-course 2012-12-05 10:28:12 +08:00
Jason Fowler dd9f2b1cca MDL-35979 - Commenting - Adding an empty alt attribute to the javascript generated delete icon for comments 2012-12-05 10:02:31 +08:00
Amy Groshek 90d740364b MDL-36960 - fix broken horizontal positioning of titles for docked blocks 2012-12-04 18:07:25 -06:00
Jason Fowler 89bc7e7b6e MDL-36110 - Blocks - Community finder icon alt attribute is now empty 2012-12-04 15:17:07 +08:00
Jerome Mouneyrac 5c58a540ea MDL-29805 add REQUIRE_CORRECT_ACCESS define + return error code when AJAX_SCRIPT fails 2012-12-04 13:44:48 +08:00
Eloy Lafuente (stronk7) 325e266e95 NOBUG: Bump backup version for 2.4 2012-12-03 21:46:18 +01:00
Eloy Lafuente (stronk7) f588fdfcc7 Moodle release 2.4 2012-12-03 20:01:33 +01:00
Eloy Lafuente (stronk7) b9896f9613 ie9 svg compatibility fixes 2012-12-03 19:53:36 +01:00
Eloy Lafuente (stronk7) b0d9ca18a4 Merge branch 'install_master' of git://git.moodle.cz/moodle-install 2012-12-03 19:51:37 +01:00
Eloy Lafuente (stronk7) e9dab879b6 Merge branch 'MDL-36934-master' of git://git.luns.net.uk/moodle 2012-12-03 09:48:13 +01:00
Aparup Banerjee 552160e844 Merge branch 'MDL-36912-master' of git://github.com/FMCorz/moodle 2012-12-03 15:54:52 +08:00
Dan Poltawski 0dcae7cd14 MDL-36950 pluginlib - add MDL to comment 2012-12-03 15:47:35 +08:00
Dan Poltawski bb608148a9 Merge branch 'MDL-36950-updates-proxy' of git://github.com/mudrd8mz/moodle 2012-12-03 15:21:25 +08:00
Aparup Banerjee ce84cbacb7 Merge branch 'MDL-36777-master' of git://github.com/FMCorz/moodle 2012-12-03 14:59:15 +08:00
Dan Poltawski e1c93ed97b Merge branch 'MDL-36914-master' of git://github.com/damyon/moodle 2012-12-03 14:45:04 +08:00
Frederic Massart 197b314f46 MDL-36860 theme: Readme for MyMobile hack 2012-12-03 14:18:35 +08:00
Dan Poltawski 7d1c3abe88 Merge branch 'MDL-36883-master' of git://github.com/FMCorz/moodle 2012-12-03 14:08:25 +08:00
Dan Poltawski 7eebac6c77 Merge branch 'MDL-36860-master' of git://github.com/FMCorz/moodle 2012-12-03 13:56:21 +08:00
Dan Poltawski 72647f09f1 Merge branch 'MDL-36944-master' of git://github.com/FMCorz/moodle 2012-12-03 13:41:02 +08:00
Dan Poltawski 539cc4061d Merge branch 'MDL-36949-master' of git://github.com/FMCorz/moodle 2012-12-03 13:28:12 +08:00
Dan Poltawski 4a67095710 Merge branch 'MDL-36884-master' of git://github.com/FMCorz/moodle 2012-12-03 13:23:21 +08:00
Dan Poltawski c62c77c0e8 Merge branch 'wip-MDL-36888-m24' of git://github.com/samhemelryk/moodle 2012-12-03 12:55:42 +08:00
Dan Poltawski f92340ed3f Merge branch 'MDL-36948-master' of git://github.com/FMCorz/moodle 2012-12-03 11:59:01 +08:00
Dan Poltawski 28ef36f018 Merge branch 'MDL-36618-master' of git://github.com/FMCorz/moodle 2012-12-03 10:36:16 +08:00
Sam Hemelryk 383b89a1e2 MDL-36888 theme: allow the use of SVG in CSS background images. 2012-12-03 09:20:06 +13:00
AMOS bot 58f5646767 Automatically generated installer lang files 2012-12-02 00:40:59 +00:00
Andrew Robert Nicols 50d6ad844a MDL-36934 Only set the autosubmit class on selects when required
The url_select class can optionally show a button (much like the non-JS
fallback). In this case, the autosubmit nature of the form shouldn't be
enforced and it should only submit on the button.
2012-12-01 09:48:42 +00:00
AMOS bot de1c8ef58b Automatically generated installer lang files 2012-12-01 00:43:06 +00:00
Tim Hunt 489f98a662 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:32:31 +00:00
Tim Hunt 7e252acff1 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 15:59:11 +00:00
David Mudrák 63def597a6 MDL-36950 Pass the Moodle proxy setting to the mdeploy.php utility 2012-11-30 16:12:34 +01:00
David Mudrák 42c6731c9f MDL-36950 Make mdeploy.php accept proxy related settings 2012-11-30 16:11:52 +01:00
David Mudrák 333048e06b MDL-36903 Add a link to Moodle documentation from mdeploy error pages 2012-11-30 16:09:58 +01:00
David Mudrák e428b5e0ae MDL-36903 Make mdeploy.php use the custom CA certificate if it exists 2012-11-30 16:09:58 +01:00
David Mudrák 30e2682756 MDL-36903 Pre-check the ZIP download before executing the mdeploy.php utility
This patch makes Moodle call HTTP HEAD method via cURL to see if the ZIP
is expected to be downloadable by mdeploy.php. This is mainly intended
for SSL certificates check.
2012-11-30 16:09:58 +01:00
David Mudrák 4785c45dd8 MDL-36903 Verify the SSL certificate of available updates provider
From now on, Moodle verifies the available updates provider server. To
make it work, either there must be a valid CA certificate available in
the operating system, or the administrator has to upload the valid CA
certificate to moodledata/moodleorgca.crt (PEM format) file manually.
2012-11-30 16:09:58 +01:00
Frederic Massart d75130a1a5 MDL-36949 usability: Use new icons for unused icons 2012-11-30 20:46:13 +08:00
Frederic Massart c2e10ac08a MDL-36948 usability: Styling for new reload icon 2012-11-30 20:19:16 +08:00
Barbara Ramiro fd7653aa27 MDL-36948 usability: New reload icon 2012-11-30 20:18:58 +08:00
Frederic Massart 01686636ce MDL-36884 usability: Deprecated icons fallback on most corresponding new icons 2012-11-30 19:32:14 +08:00
Frederic Massart c7859a51b7 MDL-36944 usability: New version of switchrole icon 2012-11-30 19:28:19 +08:00
Frederic Massart 0348468bee MDL-36912 usability: CSS adaptations for assignment 2012-11-30 19:25:14 +08:00
Barbara Ramiro f08c147ef0 MDL-36912 usability: New icons for assignment module 2012-11-30 19:25:09 +08:00
Barbara Ramiro cfd17b5da7 MDL-36618 usability: New icons for permissions risks 2012-11-30 19:17:59 +08:00
Frederic Massart d9f95015f5 MDL-36777 usability: Theming fixes on backup steps 2012-11-30 16:53:39 +08:00
Barbara Ramiro f9f8a6af6e MDL-36777 usability: New icons for backup 2012-11-30 16:53:39 +08:00
Mark Nelson 7428077d4b MDL-36755 blocks: the course overview block can only be added to the My Moodle page so removing unnecessary addinstance cap 2012-11-30 15:11:49 +08:00
Frederic Massart 41058f0a19 MDL-36860 theme: Fix MyMobile theme CSS 2012-11-30 13:21:52 +08:00
Frederic Massart d81c17f900 MDL-36860 theme: MyMobile jQuery Mobile hack 2012-11-30 13:20:54 +08:00
Andrew Robert Nicols b84a84258c 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:56:30 +00:00
Tim Hunt 6e4a2acf93 MDL-36916 quiz/questions: simplify code after MDL-36638. 2012-11-29 09:28:36 +00:00
Damyon Wiese f264499fcf MDL-36914: Assignment upgrade. Clean up patch to include outcomes in the upgrade
Thanks to Nathan Mares for reporting this issue.
2012-11-29 16:10:02 +08:00
Nathan Mares 8131a848dd MDL-36914: Re-associate all grade_item records when upgrading assignments to prevent data loss 2012-11-29 16:10:02 +08:00
Frederic Massart eacc63ab57 MDL-36883 course: Fixed HTML differences with drag & drop 2012-11-29 11:14:05 +08:00
Andrew Robert Nicols ff56ecd315 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-11-23 15:49:17 +00:00
Mark Nielsen 912918b5aa MDL-36579: Adding missing fields in mod/lti backup 2012-11-13 12:55:44 -08:00
497 changed files with 7200 additions and 3743 deletions
+8 -3
View File
@@ -691,7 +691,7 @@ class core_admin_renderer extends plugin_renderer_base {
function upgrade_reload($url) {
return html_writer::empty_tag('br') .
html_writer::tag('div',
html_writer::link($url, $this->pix_icon('i/reload', '') .
html_writer::link($url, $this->pix_icon('i/reload', '', '', array('class' => 'icon icon-pre')) .
get_string('reload'), array('title' => get_string('reload'))),
array('class' => 'continuebutton')) . html_writer::empty_tag('br');
}
@@ -1211,8 +1211,13 @@ class core_admin_renderer extends plugin_renderer_base {
if (empty($impediments)) {
$widget = $deployer->make_confirm_widget($updateinfo);
$box .= $this->output->render($widget);
} else if (isset($impediments['notwritable'])) {
$box .= $this->output->help_icon('notwritable', 'core_plugin', get_string('notwritable', 'core_plugin'));
} else {
if (isset($impediments['notwritable'])) {
$box .= $this->output->help_icon('notwritable', 'core_plugin', get_string('notwritable', 'core_plugin'));
}
if (isset($impediments['notdownloadable'])) {
$box .= $this->output->help_icon('notdownloadable', 'core_plugin', get_string('notdownloadable', 'core_plugin'));
}
}
}
+4
View File
@@ -34,5 +34,9 @@ function xmldb_tool_customlang_upgrade($oldversion) {
// Put any upgrade step following this
// Moodle v2.4.0 release upgrade line
// Put any upgrade step following this
return true;
}
+10 -2
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);
}
@@ -900,7 +904,11 @@ if ($formdata = $mform2->is_cancelled()) {
$newgroupdata = new stdClass();
$newgroupdata->name = $addgroup;
$newgroupdata->courseid = $ccache[$shortname]->id;
if ($ccache[$shortname]->groups[$addgroup]->id = groups_create_group($newgroupdata)){
$newgroupdata->description = '';
$gid = groups_create_group($newgroupdata);
if ($gid){
$ccache[$shortname]->groups[$addgroup] = new stdClass();
$ccache[$shortname]->groups[$addgroup]->id = $gid;
$ccache[$shortname]->groups[$addgroup]->name = $newgroupdata->name;
} else {
$upt->track('enrolments', get_string('unknowngroup', 'error', s($addgroup)), 'error');
+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
@@ -711,7 +711,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)
+4
View File
@@ -37,5 +37,9 @@ function xmldb_auth_manual_upgrade($oldversion) {
// Put any upgrade step following this
// Moodle v2.4.0 release upgrade line
// Put any upgrade step following this
return true;
}
+4
View File
@@ -38,5 +38,9 @@ function xmldb_auth_mnet_upgrade($oldversion) {
// Put any upgrade step following this
// Moodle v2.4.0 release upgrade line
// Put any upgrade step following this
return true;
}
+4 -1
View File
@@ -7,7 +7,10 @@
$PAGE->set_url('/auth/shibboleth/index.php');
// Support for WAYFless URLs.
$SESSION->wantsurl = optional_param('target', $SESSION->wantsurl, PARAM_LOCALURL);
$target = optional_param('target', '', PARAM_LOCALURL);
if (!empty($target)) {
$SESSION->wantsurl = $target;
}
if (isloggedin() && !isguestuser()) { // Nothing to do
if (isset($SESSION->wantsurl) and (strpos($SESSION->wantsurl, $CFG->wwwroot) === 0)) {
+1 -2
View File
@@ -40,8 +40,7 @@ if ($show_instructions) {
</form>
<p>
<?php
print_string("auth_shibboleth_contact_administrator", "auth_shibboleth");
echo '<a href="mailto:'.get_admin()->email.'"> Moodle Administrator</a>.';
print_string("auth_shib_contact_administrator", "auth_shibboleth", get_admin()->email);
?>
</p>
</div>
@@ -25,6 +25,7 @@
$string['auth_shib_auth_method'] = 'Authentication method name';
$string['auth_shib_auth_method_description'] = 'Provide a name for the Shibboleth authentication method that is familiar to your users. This could be the name of your Shibboleth federation, e.g. <tt>SWITCHaai Login</tt> or <tt>InCommon Login</tt> or similar.';
$string['auth_shib_contact_administrator'] = 'In case you are not associated with the given organizations and you need access to a course on this server, please contact the <a href="mailto:{$a}">Moodle Administrator</a>.';
$string['auth_shibboleth_contact_administrator'] = 'In case you are not associated with the given organizations and you need access to a course on this server, please contact the';
$string['auth_shibbolethdescription'] = 'Using this method users are created and authenticated using <a href="http://shibboleth.internet2.edu/">Shibboleth</a>.<br />Be sure to read the <a href="../auth/shibboleth/README.txt">README</a> for Shibboleth on how to set up your Moodle with Shibboleth';
$string['auth_shibboleth_errormsg'] = 'Please select the organization you are member of!';
+1 -1
View File
@@ -109,7 +109,7 @@ abstract class backup implements checksumable {
const OPERATION_RESTORE ='restore';// We are performing one restore
// Version (to keep CFG->backup_version (and release) updated automatically)
const VERSION = 2012112900;
const VERSION = 2012120300;
const RELEASE = '2.4';
}
+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($renderer);
+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 = context::instance_by_id($contextid, IGNORE_MISSING);
+89 -2
View File
@@ -88,10 +88,13 @@ abstract class moodle1_handlers_factory {
foreach ($plugins as $name => $dir) {
$handlerfile = $dir . '/backup/moodle1/lib.php';
$handlerclass = "moodle1_{$type}_{$name}_handler";
if (!file_exists($handlerfile)) {
if (file_exists($handlerfile)) {
require_once($handlerfile);
} elseif ($type == 'block') {
$handlerclass = "moodle1_block_generic_handler";
} else {
continue;
}
require_once($handlerfile);
if (!class_exists($handlerclass)) {
throw new moodle1_convert_exception('missing_handler_class', $handlerclass);
@@ -1989,9 +1992,93 @@ abstract class moodle1_resource_successor_handler extends moodle1_mod_handler {
*/
abstract class moodle1_block_handler extends moodle1_plugin_handler {
public function get_paths() {
$blockname = strtoupper($this->pluginname);
return array(
new convert_path('block', "/MOODLE_BACKUP/COURSE/BLOCKS/BLOCK/{$blockname}"),
);
}
public function process_block(array $data) {
$newdata = $this->convert_common_block_data($data);
$this->write_block_xml($newdata, $data);
$this->write_inforef_xml($newdata, $data);
$this->write_roles_xml($newdata, $data);
return $data;
}
protected function convert_common_block_data(array $olddata) {
$newdata = array();
$newdata['blockname'] = $olddata['name'];
$newdata['parentcontextid'] = $this->converter->get_contextid(CONTEXT_COURSE, 0);
$newdata['showinsubcontexts'] = 0;
$newdata['pagetypepattern'] = $olddata['pagetype'].='-*';
$newdata['subpagepattern'] = null;
$newdata['defaultregion'] = ($olddata['position']=='l')?'side-pre':'side-post';
$newdata['defaultweight'] = $olddata['weight'];
$newdata['configdata'] = $this->convert_configdata($olddata);
return $newdata;
}
protected function convert_configdata(array $olddata) {
return $olddata['configdata'];
}
protected function write_block_xml($newdata, $data) {
$contextid = $this->converter->get_contextid(CONTEXT_BLOCK, $data['id']);
$this->open_xml_writer("course/blocks/{$data['name']}_{$data['id']}/block.xml");
$this->xmlwriter->begin_tag('block', array('id' => $data['id'], 'contextid' => $contextid));
foreach ($newdata as $field => $value) {
$this->xmlwriter->full_tag($field, $value);
}
$this->xmlwriter->begin_tag('block_positions');
$this->xmlwriter->begin_tag('block_position', array('id' => 1));
$this->xmlwriter->full_tag('contextid', $newdata['parentcontextid']);
$this->xmlwriter->full_tag('pagetype', $data['pagetype']);
$this->xmlwriter->full_tag('subpage', '');
$this->xmlwriter->full_tag('visible', $data['visible']);
$this->xmlwriter->full_tag('region', $newdata['defaultregion']);
$this->xmlwriter->full_tag('weight', $newdata['defaultweight']);
$this->xmlwriter->end_tag('block_position');
$this->xmlwriter->end_tag('block_positions');
$this->xmlwriter->end_tag('block');
$this->close_xml_writer();
}
protected function write_inforef_xml($newdata, $data) {
$this->open_xml_writer("course/blocks/{$data['name']}_{$data['id']}/inforef.xml");
$this->xmlwriter->begin_tag('inforef');
// Subclasses may provide inforef contents if needed
$this->xmlwriter->end_tag('inforef');
$this->close_xml_writer();
}
protected function write_roles_xml($newdata, $data) {
// This is an empty shell, as the moodle1 converter doesn't handle user data.
$this->open_xml_writer("course/blocks/{$data['name']}_{$data['id']}/roles.xml");
$this->xmlwriter->begin_tag('roles');
$this->xmlwriter->full_tag('role_overrides', '');
$this->xmlwriter->full_tag('role_assignments', '');
$this->xmlwriter->end_tag('roles');
$this->close_xml_writer();
}
}
/**
* Base class for block generic handler
*/
class moodle1_block_generic_handler extends moodle1_block_handler {
}
/**
* Base class for the activity modules' subplugins
*/
+11 -5
View File
@@ -254,7 +254,7 @@ class moodle1_converter extends base_converter {
$path = '/MOODLE_BACKUP/COURSE/BLOCKS/BLOCK/' . $this->currentblock;
} else if (strpos($path, '/MOODLE_BACKUP/COURSE/BLOCKS/BLOCK') === 0) {
$path = str_replace('/MOODLE_BACKUP/COURSE/BLOCKS/BLOCK', '/MOODLE_BACKUP/COURSE/BLOCKS/BLOCK/' . $this->currentmod, $path);
$path = str_replace('/MOODLE_BACKUP/COURSE/BLOCKS/BLOCK', '/MOODLE_BACKUP/COURSE/BLOCKS/BLOCK/' . $this->currentblock, $path);
}
if ($path !== $data['path']) {
@@ -350,12 +350,12 @@ class moodle1_converter extends base_converter {
}
if ($path === '/MOODLE_BACKUP/COURSE/BLOCKS/BLOCK') {
$this->currentmod = null;
$this->currentblock = null;
$forbidden = true;
} else if (strpos($path, '/MOODLE_BACKUP/COURSE/BLOCKS/BLOCK') === 0) {
// expand the BLOCK paths so that they contain the module name
$path = str_replace('/MOODLE_BACKUP/COURSE/BLOCKS/BLOCK', '/MOODLE_BACKUP/COURSE/BLOCKS/BLOCK/' . $this->currentmod, $path);
$path = str_replace('/MOODLE_BACKUP/COURSE/BLOCKS/BLOCK', '/MOODLE_BACKUP/COURSE/BLOCKS/BLOCK/' . $this->currentblock, $path);
}
if (empty($this->pathelements[$path])) {
@@ -397,7 +397,7 @@ class moodle1_converter extends base_converter {
$path = '/MOODLE_BACKUP/COURSE/BLOCKS/BLOCK/' . $this->currentblock;
} else if (strpos($path, '/MOODLE_BACKUP/COURSE/BLOCKS/BLOCK') === 0) {
$path = str_replace('/MOODLE_BACKUP/COURSE/BLOCKS/BLOCK', '/MOODLE_BACKUP/COURSE/BLOCKS/BLOCK/' . $this->currentmod, $path);
$path = str_replace('/MOODLE_BACKUP/COURSE/BLOCKS/BLOCK', '/MOODLE_BACKUP/COURSE/BLOCKS/BLOCK/' . $this->currentblock, $path);
}
if (empty($this->pathelements[$path])) {
@@ -642,7 +642,9 @@ class moodle1_converter extends base_converter {
}
foreach ($matches[2] as $match) {
$file = str_replace(array('$@FILEPHP@$', '$@SLASH@$', '$@FORCEDOWNLOAD@$'), array('', '/', ''), $match);
$files[] = rawurldecode($file);
if ($file === clean_param($file, PARAM_PATH)) {
$files[] = rawurldecode($file);
}
}
return array_unique($files);
@@ -1210,6 +1212,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);
}
@@ -273,6 +273,15 @@ class moodle1_converter_testcase extends advanced_testcase {
$fileids = $fileman->get_fileids();
$this->assertEquals(gettype($fileids), 'array');
$this->assertEquals(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');
@@ -435,6 +444,8 @@ class moodle1_converter_testcase extends advanced_testcase {
$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);
@@ -446,6 +457,8 @@ as it is parsed from the backup file. <br /><br /><img border="0" width="110" vs
$text = moodle1_converter::rewrite_filephp_usage($text, array('/pics/news.gif', '/another/file/notused.txt'));
$this->assertEquals($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 />');
}
+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($renderer);
@@ -258,7 +258,8 @@ abstract class backup_activity_task extends backup_task {
// - section_included setting (if exists)
$settingname = $settingprefix . 'included';
$activity_included = new backup_activity_generic_setting($settingname, base_setting::IS_BOOLEAN, true);
$activity_included->get_ui()->set_icon(new pix_icon('icon', get_string('pluginname', $this->modulename), $this->modulename));
$activity_included->get_ui()->set_icon(new pix_icon('icon', get_string('pluginname', $this->modulename),
$this->modulename, array('class' => 'iconlarge icon-post')));
$this->add_setting($activity_included);
// Look for "activities" root setting
$activities = $this->plan->get_setting('activities');
@@ -278,7 +278,8 @@ abstract class restore_activity_task extends restore_task {
// - section_included setting (if exists)
$settingname = $settingprefix . 'included';
$activity_included = new restore_activity_generic_setting($settingname, base_setting::IS_BOOLEAN, true);
$activity_included->get_ui()->set_icon(new pix_icon('icon', get_string('pluginname', $this->modulename), $this->modulename));
$activity_included->get_ui()->set_icon(new pix_icon('icon', get_string('pluginname', $this->modulename),
$this->modulename, array('class' => 'iconlarge icon-post')));
$this->add_setting($activity_included);
// Look for "activities" root setting
$activities = $this->plan->get_setting('activities');
+19 -8
View File
@@ -190,6 +190,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)) {
@@ -288,8 +297,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);
}
/**
@@ -1259,11 +1273,11 @@ class restore_section_structure_step extends restore_structure_step {
$sectionid = $this->get_task()->get_sectionid();
// Get data object for current section availability (if any).
$data = $DB->get_record('course_sections_availability',
array('coursesectionid' => $sectionid), 'id, sourcecmid, gradeitemid', IGNORE_MISSING);
$records = $DB->get_records('course_sections_availability',
array('coursesectionid' => $sectionid), 'id, sourcecmid, gradeitemid');
// If it exists, update mappings.
if ($data) {
foreach ($records as $data) {
// Only update mappings for entries which are created by this restore.
// Otherwise, when you restore to an existing course, it will mess up
// existing section availability entries.
@@ -3072,9 +3086,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();
+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);
+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;
+4 -4
View File
@@ -329,7 +329,7 @@ class backup_setting_ui_text extends backup_setting_ui {
$icon = $this->get_icon();
$label = $this->get_label($task);
if (!empty($icon)) {
$label .= '&nbsp;'.$output->render($icon);
$label .= $output->render($icon);
}
// name, label, attributes
return $this->apply_options(array('element'=>'text','name'=>self::NAME_PREFIX.$this->name, 'label'=>$label, 'attributes'=>$this->attributes));
@@ -380,7 +380,7 @@ class backup_setting_ui_checkbox extends backup_setting_ui {
$icon = $this->get_icon();
$label = $this->get_label($task);
if (!empty($icon)) {
$label .= '&nbsp;'.$output->render($icon);
$label .= $output->render($icon);
}
return $this->apply_options(array('element'=>'checkbox','name'=>self::NAME_PREFIX.$this->name, 'label'=>$label, 'text'=>$this->text, 'attributes'=>$this->attributes));
}
@@ -473,7 +473,7 @@ class backup_setting_ui_radio extends backup_setting_ui {
$icon = $this->get_icon();
$label = $this->get_label($task);
if (!empty($icon)) {
$label .= '&nbsp;'.$output->render($icon);
$label .= $output->render($icon);
}
// name, label, text, value, attributes
return $this->apply_options(array('element'=>'radio','name'=>self::NAME_PREFIX.$this->name, 'label'=>$label, 'text'=>$this->text, 'value'=>$this->value, 'attributes'=>$this->attributes));
@@ -538,7 +538,7 @@ class backup_setting_ui_select extends backup_setting_ui {
$icon = $this->get_icon();
$label = $this->get_label($task);
if (!empty($icon)) {
$label .= '&nbsp;'.$output->render($icon);
$label .= $output->render($icon);
}
// name, label, options, attributes
return $this->apply_options(array('element'=>'select','name'=>self::NAME_PREFIX.$this->name, 'label'=>$label, 'options'=>$this->values, 'attributes'=>$this->attributes));
+1
View File
@@ -322,6 +322,7 @@ abstract class base_moodleform extends moodleform {
$config->question = get_string('confirmcancelquestion', 'backup');
$config->yesLabel = get_string('confirmcancelyes', 'backup');
$config->noLabel = get_string('confirmcancelno', 'backup');
$config->closeButtonTitle = get_string('close', 'editor');
$PAGE->requires->yui_module('moodle-backup-confirmcancel', 'M.core_backup.watch_cancel_buttons', array($config));
$PAGE->requires->yui_module('moodle-backup-backupselectall', 'M.core_backup.select_all_init',
+2 -2
View File
@@ -147,9 +147,9 @@ class core_backup_renderer extends plugin_renderer_base {
$table->data = array();
}
$name = get_string('pluginname', $activity->modulename);
$icon = new pix_icon('icon', $name, $activity->modulename);
$icon = new pix_icon('icon', $name, $activity->modulename, array('class' => 'iconlarge icon-pre'));
$table->data[] = array(
$this->output->render($icon).'&nbsp;'.$name,
$this->output->render($icon).$name,
$activity->title,
($activity->settings[$activitykey.'_userinfo'])?$yestick:$notick,
);
+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 . get_string('addcourse', 'block_community'),
+2 -2
View File
@@ -228,10 +228,10 @@ if (!empty($courses)) {
}
}
$PAGE->requires->yui_module('moodle-block_community-comments', 'M.blocks_community.init_comments',
array(array('commentids' => $commentedcourseids)));
array(array('commentids' => $commentedcourseids, 'closeButtonTitle' => get_string('close', 'editor'))));
$PAGE->requires->yui_module('moodle-block_community-imagegallery', 'M.blocks_community.init_imagegallery',
array(array('imageids' => $courseids, 'imagenumbers' => $courseimagenumbers,
'huburl' => $huburl)));
'huburl' => $huburl, 'closeButtonTitle' => get_string('close', 'editor'))));
echo highlight($search, $renderer->course_list($courses, $huburl, $courseid));
+4
View File
@@ -50,5 +50,9 @@ function xmldb_block_community_upgrade($oldversion) {
// Put any upgrade step following this
// Moodle v2.4.0 release upgrade line
// Put any upgrade step following this
return true;
}
+3 -2
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;
}
+28 -19
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,17 +18,19 @@ 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
zIndex:100,
closeButtonTitle: this.get('closeButtonTitle')
});
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);
}
@@ -37,34 +39,37 @@ 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);
// Focus on the close button
this.panels[commentid].get('buttons').header[0].focus();
},
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
}
@@ -74,7 +79,11 @@ YUI.add('moodle-block_community-comments', function(Y) {
}, {
NAME : COMMENTSNAME,
ATTRS : {
commentids: {}
commentids: {},
closeButtonTitle : {
validator : Y.Lang.isString,
value : 'Close'
}
}
});
@@ -84,5 +93,5 @@ YUI.add('moodle-block_community-comments', function(Y) {
}
}, '@VERSION@', {
requires:['base','overlay', 'moodle-core-notification']
requires:['base', 'moodle-core-notification']
});
+48 -41
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
zIndex:100,
closeButtonTitle: this.get('closeButtonTitle')
});
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,17 @@ 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();
// Focus on the close button
this.panel.get('buttons').header[0].focus();
}, this, url);
@@ -147,12 +150,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 +170,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
}
@@ -185,7 +188,11 @@ YUI.add('moodle-block_community-imagegallery', function(Y) {
ATTRS : {
imageids: {},
imagenumbers: {},
huburl: {}
huburl: {},
closeButtonTitle : {
validator : Y.Lang.isString,
value : 'Close'
}
}
});
@@ -195,5 +202,5 @@ YUI.add('moodle-block_community-imagegallery', function(Y) {
}
}, '@VERSION@', {
requires:['base','node','overlay', 'moodle-core-notification']
requires:['base','node', 'moodle-core-notification']
});
@@ -38,6 +38,10 @@ class block_completionstatus extends block_base {
$this->title = get_string('pluginname', 'block_completionstatus');
}
function applicable_formats() {
return array('all' => true, 'mod' => false, 'tag' => false, 'my' => false);
}
public function get_content() {
global $USER;
-10
View File
@@ -26,16 +26,6 @@ defined('MOODLE_INTERNAL') || die();
$capabilities = array(
'block/completionstatus:myaddinstance' => array(
'captype' => 'write',
'contextlevel' => CONTEXT_SYSTEM,
'archetypes' => array(
'user' => CAP_ALLOW
),
'clonepermissionsfrom' => 'moodle/my:manageblocks'
),
'block/completionstatus:addinstance' => array(
'riskbitmask' => RISK_SPAM | RISK_XSS,
+69
View File
@@ -0,0 +1,69 @@
<?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/>.
/**
* This file keeps track of upgrades to the completion status block
*
* Sometimes, changes between versions involve alterations to database structures
* and other major things that may break installations.
*
* The upgrade function in this file will attempt to perform all the necessary
* actions to upgrade your older installation to the current version.
*
* If there's something it cannot do itself, it will tell you what you need to do.
*
* The commands in here will all be database-neutral, using the methods of
* database_manager class
*
* Please do not forget to use upgrade_set_timeout()
* before any action that may take longer time to finish.
*
* @since 2.0
* @package blocks
* @copyright 2012 Mark Nelson <markn@moodle.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
/**
* Handles upgrading instances of this block.
*
* @param int $oldversion
* @param object $block
*/
function xmldb_block_completionstatus_upgrade($oldversion, $block) {
global $DB;
// Moodle v2.4.0 release upgrade line
// Put any upgrade step following this.
if ($oldversion < 2012112901) {
// Get the instances of this block.
if ($blocks = $DB->get_records('block_instances', array('blockname' => 'completionstatus', 'pagetypepattern' => 'my-index'))) {
// Loop through and remove them from the My Moodle page.
foreach ($blocks as $block) {
blocks_delete_instance($block);
}
}
// Savepoint reached.
upgrade_block_savepoint(true, 2012112901, 'completionstatus');
}
return true;
}
@@ -25,7 +25,6 @@
$string['completionprogressdetails'] = 'Completion progress details';
$string['completionstatus:addinstance'] = 'Add a new course completion status block';
$string['completionstatus:myaddinstance'] = 'Add a new course completion status block to the My Moodle page';
$string['criteriagroup'] = 'Criteria group';
$string['firstofsecond'] = '{$a->first} of {$a->second}';
$string['pluginname'] = 'Course completion status';
+2 -2
View File
@@ -26,7 +26,7 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2012112900; // The current plugin version (Date: YYYYMMDDXX)
$plugin->version = 2012112901; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2012112900; // Requires this Moodle version
$plugin->component = 'block_completionstatus';
$plugin->dependencies = array('report_completion' => 2012112900);
$plugin->dependencies = array('report_completion' => 2012112900);
+1 -14
View File
@@ -34,18 +34,5 @@ $capabilities = array(
),
'clonepermissionsfrom' => 'moodle/my:manageblocks'
),
'block/course_overview:addinstance' => array(
'riskbitmask' => RISK_SPAM | RISK_XSS,
'captype' => 'write',
'contextlevel' => CONTEXT_BLOCK,
'archetypes' => array(
'editingteacher' => CAP_ALLOW,
'manager' => CAP_ALLOW
),
'clonepermissionsfrom' => 'moodle/site:manageblocks'
),
)
);
@@ -27,7 +27,6 @@ $string['alwaysshowall'] = 'Always Show All';
$string['collapseall'] = 'Collapse All Course Lists';
$string['configotherexpanded'] = 'If enabled, Other Courses will be expanded by default unless overriden by user preferences.';
$string['configpreservestates'] = 'If enabled, the collapsed/expanded states set by the user are stored and used on each load.';
$string['course_overview:addinstance'] = 'Add a new course overview block';
$string['course_overview:myaddinstance'] = 'Add a new course overview block to the My Moodle page';
$string['defaultmaxcourses'] = 'Default maximum courses';
$string['defaultmaxcoursesdesc'] = 'Maximum courses which should be displayed on course overview block, 0 will show all courses';
+3 -1
View File
@@ -106,7 +106,9 @@ class block_course_overview_renderer extends plugin_renderer_base {
$attributes = array('title' => s($course->fullname));
if ($course->id > 0) {
$link = html_writer::link(new moodle_url('/course/view.php', array('id' => $course->id)), format_string($course->shortname, true, $course->id), $attributes);
$courseurl = new moodle_url('/course/view.php', array('id' => $course->id));
$coursefullname = format_string($course->fullname, true, $course->id);
$link = html_writer::link($courseurl, $coursefullname, $attributes);
$html .= $this->output->heading($link, 2, 'title');
} else {
$html .= $this->output->heading(html_writer::link(
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2012112900; // The current plugin version (Date: YYYYMMDDXX)
$plugin->version = 2012121000; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2012112900; // Requires this Moodle version
$plugin->component = 'block_course_overview'; // Full name of the plugin (used for diagnostics)
$plugin->component = 'block_course_overview'; // Full name of the plugin (used for diagnostics)
@@ -5,6 +5,10 @@ class block_course_summary extends block_base {
$this->title = get_string('pluginname', 'block_course_summary');
}
function applicable_formats() {
return array('all' => true, 'mod' => false, 'tag' => false, 'my' => false);
}
function specialization() {
if($this->page->pagetype == PAGE_COURSE_VIEW && $this->page->course->id != SITEID) {
$this->title = get_string('coursesummary', 'block_course_summary');
-10
View File
@@ -26,16 +26,6 @@ defined('MOODLE_INTERNAL') || die();
$capabilities = array(
'block/course_summary:myaddinstance' => array(
'captype' => 'write',
'contextlevel' => CONTEXT_SYSTEM,
'archetypes' => array(
'user' => CAP_ALLOW
),
'clonepermissionsfrom' => 'moodle/my:manageblocks'
),
'block/course_summary:addinstance' => array(
'riskbitmask' => RISK_SPAM | RISK_XSS,
+69
View File
@@ -0,0 +1,69 @@
<?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/>.
/**
* This file keeps track of upgrades to the course summary block
*
* Sometimes, changes between versions involve alterations to database structures
* and other major things that may break installations.
*
* The upgrade function in this file will attempt to perform all the necessary
* actions to upgrade your older installation to the current version.
*
* If there's something it cannot do itself, it will tell you what you need to do.
*
* The commands in here will all be database-neutral, using the methods of
* database_manager class
*
* Please do not forget to use upgrade_set_timeout()
* before any action that may take longer time to finish.
*
* @since 2.0
* @package blocks
* @copyright 2012 Mark Nelson <markn@moodle.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
/**
* Handles upgrading instances of this block.
*
* @param int $oldversion
* @param object $block
*/
function xmldb_block_course_summary_upgrade($oldversion, $block) {
global $DB;
// Moodle v2.4.0 release upgrade line
// Put any upgrade step following this.
if ($oldversion < 2012112901) {
// Get the instances of this block.
if ($blocks = $DB->get_records('block_instances', array('blockname' => 'course_summary', 'pagetypepattern' => 'my-index'))) {
// Loop through and remove them from the My Moodle page.
foreach ($blocks as $block) {
blocks_delete_instance($block);
}
}
// Savepoint reached.
upgrade_block_savepoint(true, 2012112901, 'course_summary');
}
return true;
}
@@ -25,5 +25,4 @@
$string['coursesummary'] = 'Course summary';
$string['course_summary:addinstance'] = 'Add a new course/site description block';
$string['course_summary:myaddinstance'] = 'Add a new course/site description block to the My Moodle page';
$string['pluginname'] = 'Course/Site description';
+1 -1
View File
@@ -25,6 +25,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2012112900; // The current plugin version (Date: YYYYMMDDXX)
$plugin->version = 2012112901; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2012112900; // Requires this Moodle version
$plugin->component = 'block_course_summary'; // Full name of the plugin (used for diagnostics)
+2 -2
View File
@@ -516,7 +516,7 @@ M.core_dock.fixTitleOrientation = function(item, title, text) {
// We need to fix a font-size - sorry theme designers.
var fontsize = '11px';
var transform = (clockwise) ? 'rotate(90deg)' : 'rotate(270deg)';
var test = Y.Node.create('<h2><span style="font-size:'+fontsize+';position:absolute;">'+text+'</span></h2>');
var test = Y.Node.create('<h2><span class="transform-test-node" style="font-size:'+fontsize+';">'+text+'</span></h2>');
this.nodes.body.insert(test, 0);
var width = test.one('span').get('offsetWidth') * 1.2;
var height = test.one('span').get('offsetHeight');
@@ -936,7 +936,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="" /></span>');
var closeicon = Y.Node.create('<span class="hidepanelicon" tabindex="0"><img alt="'+M.str.block.hidepanel+'" title="'+M.str.block.hidedockpanel+'" /></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}});
@@ -5,10 +5,15 @@ define('BGR_LASTMODIFIED', '1');
define('BGR_NEXTONE', '2');
class block_glossary_random extends block_base {
function init() {
$this->title = get_string('pluginname','block_glossary_random');
}
function applicable_formats() {
return array('all' => true, 'mod' => false, 'tag' => false, 'my' => false);
}
function specialization() {
global $CFG, $DB;
@@ -137,6 +142,7 @@ class block_glossary_random extends block_base {
$this->config->cache = '';
$this->instance_config_commit();
$this->content = new stdClass();
$this->content->text = get_string('notyetconfigured','block_glossary_random');
$this->content->footer = '';
return $this->content;
-10
View File
@@ -26,16 +26,6 @@ defined('MOODLE_INTERNAL') || die();
$capabilities = array(
'block/glossary_random:myaddinstance' => array(
'captype' => 'write',
'contextlevel' => CONTEXT_SYSTEM,
'archetypes' => array(
'user' => CAP_ALLOW
),
'clonepermissionsfrom' => 'moodle/my:manageblocks'
),
'block/glossary_random:addinstance' => array(
'riskbitmask' => RISK_SPAM | RISK_XSS,
+69
View File
@@ -0,0 +1,69 @@
<?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/>.
/**
* This file keeps track of upgrades to the glossary random block
*
* Sometimes, changes between versions involve alterations to database structures
* and other major things that may break installations.
*
* The upgrade function in this file will attempt to perform all the necessary
* actions to upgrade your older installation to the current version.
*
* If there's something it cannot do itself, it will tell you what you need to do.
*
* The commands in here will all be database-neutral, using the methods of
* database_manager class
*
* Please do not forget to use upgrade_set_timeout()
* before any action that may take longer time to finish.
*
* @since 2.0
* @package blocks
* @copyright 2012 Mark Nelson <markn@moodle.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
/**
* Handles upgrading instances of this block.
*
* @param int $oldversion
* @param object $block
*/
function xmldb_block_glossary_random_upgrade($oldversion, $block) {
global $DB;
// Moodle v2.4.0 release upgrade line
// Put any upgrade step following this.
if ($oldversion < 2012112901) {
// Get the instances of this block.
if ($blocks = $DB->get_records('block_instances', array('blockname' => 'glossary_random', 'pagetypepattern' => 'my-index'))) {
// Loop through and remove them from the My Moodle page.
foreach ($blocks as $block) {
blocks_delete_instance($block);
}
}
// Savepoint reached.
upgrade_block_savepoint(true, 2012112901, 'glossary_random');
}
return true;
}
@@ -28,7 +28,6 @@ $string['askaddentry'] = 'When users can add entries to the glossary, show a lin
$string['askinvisible'] = 'When users cannot edit or view the glossary, show this text (without link)';
$string['askviewglossary'] = 'When users can view the glossary but not add entries, show a link with this text';
$string['glossary_random:addinstance'] = 'Add a new random glossary entry block';
$string['glossary_random:myaddinstance'] = 'Add a new random glossary entry block to the My Moodle page';
$string['intro'] = 'Make sure you have at least one glossary with at least one entry added to this course. Then you can adjust the following settings';
$string['invisible'] = '(to be continued)';
$string['lastmodified'] = 'Last modified entry';
+1 -1
View File
@@ -25,6 +25,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2012112900; // The current plugin version (Date: YYYYMMDDXX)
$plugin->version = 2012112901; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2012112900; // Requires this Moodle version
$plugin->component = 'block_glossary_random'; // Full name of the plugin (used for diagnostics)
+46
View File
@@ -0,0 +1,46 @@
<?php
/**
* Provides support for the conversion of moodle1 backup to the moodle2 format
*
* @package block_html
* @copyright 2012 Paul Nicholls
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
/**
* Block conversion handler for html
*/
class moodle1_block_html_handler extends moodle1_block_handler {
private $fileman = null;
protected function convert_configdata(array $olddata) {
$instanceid = $olddata['id'];
$contextid = $this->converter->get_contextid(CONTEXT_BLOCK, $olddata['id']);
$configdata = unserialize(base64_decode($olddata['configdata']));
// get a fresh new file manager for this instance
$this->fileman = $this->converter->get_file_manager($contextid, 'block_html');
// convert course files embedded in the block content
$this->fileman->filearea = 'content';
$this->fileman->itemid = 0;
$configdata->text = moodle1_converter::migrate_referenced_files($configdata->text, $this->fileman);
$configdata->format = FORMAT_HTML;
return base64_encode(serialize($configdata));
}
protected function write_inforef_xml($newdata, $data) {
$this->open_xml_writer("course/blocks/{$data['name']}_{$data['id']}/inforef.xml");
$this->xmlwriter->begin_tag('inforef');
$this->xmlwriter->begin_tag('fileref');
foreach ($this->fileman->get_fileids() as $fileid) {
$this->write_xml('file', array('id' => $fileid));
}
$this->xmlwriter->end_tag('fileref');
$this->xmlwriter->end_tag('inforef');
$this->close_xml_writer();
}
}
+4
View File
@@ -36,5 +36,9 @@ function xmldb_block_html_upgrade($oldversion) {
// Put any upgrade step following this
// Moodle v2.4.0 release upgrade line
// Put any upgrade step following this
return true;
}
+1 -1
View File
@@ -7,7 +7,7 @@ class block_mentees extends block_base {
}
function applicable_formats() {
return array('all' => true, 'tag' => false);
return array('all' => true, 'tag' => false, 'my' => false);
}
function specialization() {
-10
View File
@@ -26,16 +26,6 @@ defined('MOODLE_INTERNAL') || die();
$capabilities = array(
'block/mentees:myaddinstance' => array(
'captype' => 'write',
'contextlevel' => CONTEXT_SYSTEM,
'archetypes' => array(
'user' => CAP_ALLOW
),
'clonepermissionsfrom' => 'moodle/my:manageblocks'
),
'block/mentees:addinstance' => array(
'riskbitmask' => RISK_SPAM | RISK_XSS,
+69
View File
@@ -0,0 +1,69 @@
<?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/>.
/**
* This file keeps track of upgrades to the mentees block
*
* Sometimes, changes between versions involve alterations to database structures
* and other major things that may break installations.
*
* The upgrade function in this file will attempt to perform all the necessary
* actions to upgrade your older installation to the current version.
*
* If there's something it cannot do itself, it will tell you what you need to do.
*
* The commands in here will all be database-neutral, using the methods of
* database_manager class
*
* Please do not forget to use upgrade_set_timeout()
* before any action that may take longer time to finish.
*
* @since 2.0
* @package blocks
* @copyright 2012 Mark Nelson <markn@moodle.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
/**
* Handles upgrading instances of this block.
*
* @param int $oldversion
* @param object $block
*/
function xmldb_block_mentees_upgrade($oldversion, $block) {
global $DB;
// Moodle v2.4.0 release upgrade line
// Put any upgrade step following this.
if ($oldversion < 2012112901) {
// Get the instances of this block.
if ($blocks = $DB->get_records('block_instances', array('blockname' => 'mentees', 'pagetypepattern' => 'my-index'))) {
// Loop through and remove them from the My Moodle page.
foreach ($blocks as $block) {
blocks_delete_instance($block);
}
}
// Savepoint reached.
upgrade_block_savepoint(true, 2012112901, 'mentees');
}
return true;
}
-1
View File
@@ -27,6 +27,5 @@ $string['configtitle'] = 'Block title';
$string['configtitleblankhides'] = 'Block title (no title if blank)';
$string['leaveblanktohide'] = 'leave blank to hide the title';
$string['mentees:addinstance'] = 'Add a new mentees block';
$string['mentees:myaddinstance'] = 'Add a new mentees block to the My Moodle page';
$string['newmenteesblock'] = '(new Mentees block)';
$string['pluginname'] = 'Mentees';
+1 -1
View File
@@ -25,6 +25,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2012112900; // The current plugin version (Date: YYYYMMDDXX)
$plugin->version = 2012112901; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2012112900; // Requires this Moodle version
$plugin->component = 'block_mentees'; // Full name of the plugin (used for diagnostics)
+4
View File
@@ -62,5 +62,9 @@ function xmldb_block_navigation_upgrade($oldversion, $block) {
// Put any upgrade step following this
// Moodle v2.4.0 release upgrade line
// Put any upgrade step following this
return true;
}
+4
View File
@@ -5,6 +5,10 @@ class block_news_items extends block_base {
$this->title = get_string('pluginname', 'block_news_items');
}
function applicable_formats() {
return array('all' => true, 'mod' => false, 'tag' => false, 'my' => false);
}
function get_content() {
global $CFG, $USER;
-10
View File
@@ -26,16 +26,6 @@ defined('MOODLE_INTERNAL') || die();
$capabilities = array(
'block/news_items:myaddinstance' => array(
'captype' => 'write',
'contextlevel' => CONTEXT_SYSTEM,
'archetypes' => array(
'user' => CAP_ALLOW
),
'clonepermissionsfrom' => 'moodle/my:manageblocks'
),
'block/news_items:addinstance' => array(
'riskbitmask' => RISK_SPAM | RISK_XSS,
+69
View File
@@ -0,0 +1,69 @@
<?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/>.
/**
* This file keeps track of upgrades to the latest news block
*
* Sometimes, changes between versions involve alterations to database structures
* and other major things that may break installations.
*
* The upgrade function in this file will attempt to perform all the necessary
* actions to upgrade your older installation to the current version.
*
* If there's something it cannot do itself, it will tell you what you need to do.
*
* The commands in here will all be database-neutral, using the methods of
* database_manager class
*
* Please do not forget to use upgrade_set_timeout()
* before any action that may take longer time to finish.
*
* @since 2.0
* @package blocks
* @copyright 2012 Mark Nelson <markn@moodle.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
/**
* Handles upgrading instances of this block.
*
* @param int $oldversion
* @param object $block
*/
function xmldb_block_news_items_upgrade($oldversion, $block) {
global $DB;
// Moodle v2.4.0 release upgrade line
// Put any upgrade step following this.
if ($oldversion < 2012112901) {
// Get the instances of this block.
if ($blocks = $DB->get_records('block_instances', array('blockname' => 'news_items', 'pagetypepattern' => 'my-index'))) {
// Loop through and remove them from the My Moodle page.
foreach ($blocks as $block) {
blocks_delete_instance($block);
}
}
// Savepoint reached.
upgrade_block_savepoint(true, 2012112901, 'news_items');
}
return true;
}
@@ -24,5 +24,4 @@
*/
$string['news_items:addinstance'] = 'Add a new latest news block';
$string['news_items:myaddinstance'] = 'Add a new navigation block to the My Moodle page';
$string['pluginname'] = 'Latest news';
+1 -1
View File
@@ -25,6 +25,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2012112900; // The current plugin version (Date: YYYYMMDDXX)
$plugin->version = 2012112901; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2012112900; // Requires this Moodle version
$plugin->component = 'block_news_items'; // Full name of the plugin (used for diagnostics)
+11 -4
View File
@@ -10,7 +10,13 @@ class block_online_users extends block_base {
$this->title = get_string('pluginname','block_online_users');
}
function has_config() {return true;}
function applicable_formats() {
return array('all' => true, 'mod' => false, 'tag' => false, 'my' => false);
}
function has_config() {
return true;
}
function get_content() {
global $USER, $CFG, $DB, $OUTPUT;
@@ -151,12 +157,13 @@ class block_online_users extends block_base {
$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') .'" />';
-10
View File
@@ -26,16 +26,6 @@ defined('MOODLE_INTERNAL') || die();
$capabilities = array(
'block/online_users:myaddinstance' => array(
'captype' => 'write',
'contextlevel' => CONTEXT_SYSTEM,
'archetypes' => array(
'user' => CAP_ALLOW
),
'clonepermissionsfrom' => 'moodle/my:manageblocks'
),
'block/online_users:addinstance' => array(
'riskbitmask' => RISK_SPAM | RISK_XSS,
+69
View File
@@ -0,0 +1,69 @@
<?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/>.
/**
* This file keeps track of upgrades to the online users block
*
* Sometimes, changes between versions involve alterations to database structures
* and other major things that may break installations.
*
* The upgrade function in this file will attempt to perform all the necessary
* actions to upgrade your older installation to the current version.
*
* If there's something it cannot do itself, it will tell you what you need to do.
*
* The commands in here will all be database-neutral, using the methods of
* database_manager class
*
* Please do not forget to use upgrade_set_timeout()
* before any action that may take longer time to finish.
*
* @since 2.0
* @package blocks
* @copyright 2012 Mark Nelson <markn@moodle.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
/**
* Handles upgrading instances of this block.
*
* @param int $oldversion
* @param object $block
*/
function xmldb_block_online_users_upgrade($oldversion, $block) {
global $DB;
// Moodle v2.4.0 release upgrade line
// Put any upgrade step following this.
if ($oldversion < 2012112901) {
// Get the instances of this block.
if ($blocks = $DB->get_records('block_instances', array('blockname' => 'online_users', 'pagetypepattern' => 'my-index'))) {
// Loop through and remove them from the My Moodle page.
foreach ($blocks as $block) {
blocks_delete_instance($block);
}
}
// Savepoint reached.
upgrade_block_savepoint(true, 2012112901, 'online_users');
}
return true;
}
@@ -25,7 +25,6 @@
$string['configtimetosee'] = 'Number of minutes determining the period of inactivity after which a user is no longer considered to be online.';
$string['online_users:addinstance'] = 'Add a new online users block';
$string['online_users:myaddinstance'] = 'Add a new online users block to the My Moodle page';
$string['online_users:viewlist'] = 'View list of online users';
$string['periodnminutes'] = 'last {$a} minutes';
$string['pluginname'] = 'Online users';
+1 -1
View File
@@ -25,6 +25,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2012112900; // The current plugin version (Date: YYYYMMDDXX)
$plugin->version = 2012112901; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2012112900; // Requires this Moodle version
$plugin->component = 'block_online_users'; // Full name of the plugin (used for diagnostics)
+34
View File
@@ -0,0 +1,34 @@
<?php
/**
* Provides support for the conversion of moodle1 backup to the moodle2 format
*
* @package block_rss_client
* @copyright 2012 Paul Nicholls
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
/**
* Block conversion handler for rss_client
*/
class moodle1_block_rss_client_handler extends moodle1_block_handler {
public function process_block(array $data) {
parent::process_block($data);
$instanceid = $data['id'];
$contextid = $this->converter->get_contextid(CONTEXT_BLOCK, $data['id']);
// Moodle 1.9 backups do not include sufficient data to restore feeds, so we need an empty shell rss_client.xml
// for the restore process to find
$this->open_xml_writer("course/blocks/{$data['name']}_{$instanceid}/rss_client.xml");
$this->xmlwriter->begin_tag('block', array('id' => $instanceid, 'contextid' => $contextid, 'blockname' => 'rss_client'));
$this->xmlwriter->begin_tag('rss_client', array('id' => $instanceid));
$this->xmlwriter->full_tag('feeds', '');
$this->xmlwriter->end_tag('rss_client');
$this->xmlwriter->end_tag('block');
$this->close_xml_writer();
return $data;
}
}
@@ -78,6 +78,9 @@ class restore_rss_client_block_structure_step extends restore_structure_step {
$configdata = $DB->get_field('block_instances', 'configdata', array('id' => $this->task->get_blockid()));
// Extract configdata
$config = unserialize(base64_decode($configdata));
if (empty($config)) {
$config = new stdClass();
}
// Set array of used rss feeds
$config->rssid = $feedsarr;
// Serialize back the configdata
@@ -36,7 +36,11 @@ require_once($CFG->libdir.'/completionlib.php');
class block_selfcompletion extends block_base {
public function init() {
$this->title = get_string('pluginname', 'block_selfcompletion');
$this->title = get_string('pluginname', 'block_selfcompletion');
}
function applicable_formats() {
return array('all' => true, 'mod' => false, 'tag' => false, 'my' => false);
}
public function get_content() {
-10
View File
@@ -26,16 +26,6 @@ defined('MOODLE_INTERNAL') || die();
$capabilities = array(
'block/selfcompletion:myaddinstance' => array(
'captype' => 'write',
'contextlevel' => CONTEXT_SYSTEM,
'archetypes' => array(
'user' => CAP_ALLOW
),
'clonepermissionsfrom' => 'moodle/my:manageblocks'
),
'block/selfcompletion:addinstance' => array(
'riskbitmask' => RISK_SPAM | RISK_XSS,
+69
View File
@@ -0,0 +1,69 @@
<?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/>.
/**
* This file keeps track of upgrades to the self completion block
*
* Sometimes, changes between versions involve alterations to database structures
* and other major things that may break installations.
*
* The upgrade function in this file will attempt to perform all the necessary
* actions to upgrade your older installation to the current version.
*
* If there's something it cannot do itself, it will tell you what you need to do.
*
* The commands in here will all be database-neutral, using the methods of
* database_manager class
*
* Please do not forget to use upgrade_set_timeout()
* before any action that may take longer time to finish.
*
* @since 2.0
* @package blocks
* @copyright 2012 Mark Nelson <markn@moodle.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
/**
* Handles upgrading instances of this block.
*
* @param int $oldversion
* @param object $block
*/
function xmldb_block_selfcompletion_upgrade($oldversion, $block) {
global $DB;
// Moodle v2.4.0 release upgrade line
// Put any upgrade step following this.
if ($oldversion < 2012112901) {
// Get the instances of this block.
if ($blocks = $DB->get_records('block_instances', array('blockname' => 'selfcompletion', 'pagetypepattern' => 'my-index'))) {
// Loop through and remove them from the My Moodle page.
foreach ($blocks as $block) {
blocks_delete_instance($block);
}
}
// Savepoint reached.
upgrade_block_savepoint(true, 2012112901, 'selfcompletion');
}
return true;
}
@@ -28,4 +28,3 @@ $string['completecourse'] = 'Complete course';
$string['pluginname'] = 'Self completion';
$string['selfcompletionnotenabled'] = 'The self completion criteria has not been enabled for this course';
$string['selfcompletion:addinstance'] = 'Add a new self completion block';
$string['selfcompletion:myaddinstance'] = 'Add a new self completion block to the My Moodle page';
+1 -1
View File
@@ -25,6 +25,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2012112900; // The current plugin version (Date: YYYYMMDDXX)
$plugin->version = 2012112901; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2012112900; // Requires this Moodle version
$plugin->component = 'block_selfcompletion'; // Full name of the plugin (used for diagnostics)
+4
View File
@@ -62,5 +62,9 @@ function xmldb_block_settings_upgrade($oldversion, $block) {
// Put any upgrade step following this
// Moodle v2.4.0 release upgrade line
// Put any upgrade step following this
return true;
}
+1 -1
View File
@@ -33,7 +33,7 @@ class block_tags_edit_form extends block_edit_form {
// Fields for editing HTML block title and contents.
$mform->addElement('header', 'configheader', get_string('blocksettings', 'block'));
$mform->addElement('text', 'config_title', get_string('pluginname', 'block_tags'));
$mform->addElement('text', 'config_title', get_string('configtitle', 'block_tags'));
$mform->setType('config_title', PARAM_TEXT);
$mform->setDefault('config_title', get_string('pluginname', 'block_tags'));
+1
View File
@@ -25,6 +25,7 @@
$string['add'] = 'Add';
$string['alltags'] = 'All tags:';
$string['arrowtitle'] = 'Click here to enter the suggested text (grey letters).';
$string['configtitle'] = 'Block title';
$string['coursetags'] = 'Course tags:';
$string['disabledtags'] = 'Tags are disabled';
$string['defaultdisplay'] = 'Tag type to display';
+12
View File
@@ -158,11 +158,23 @@ function blog_rss_get_params($filters) {
function blog_rss_get_feed($context, $args) {
global $CFG, $SITE, $DB;
if (empty($CFG->enableblogs)) {
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 = context_system::instance();
if (!has_capability('moodle/blog:view', $sitecontext)) {
return null;
+1 -1
View File
@@ -750,7 +750,7 @@ class cache_definition {
if (!empty($this->identifiers)) {
$identifiers = array();
foreach ($this->identifiers as $key => $value) {
$identifiers[] = htmlentities($key).'='.htmlentities($value);
$identifiers[] = htmlentities($key, ENT_QUOTES, 'UTF-8').'='.htmlentities($value, ENT_QUOTES, 'UTF-8');
}
$this->keyprefixmulti['identifiers'] = join('&', $identifiers);
}
+4
View File
@@ -1093,6 +1093,10 @@ class cache_application extends cache implements cache_loader_with_locking {
$todelete = array();
// Iterate the returned data for the events.
foreach ($events as $event => $keys) {
if ($keys === false) {
// There are no keys.
continue;
}
// Look at each key and check the timestamp.
foreach ($keys as $key => $timestamp) {
// If the timestamp of the event is more than or equal to the last invalidation (happened between the last
+7 -1
View File
@@ -101,7 +101,13 @@ class cachestore_addinstance_form extends moodleform {
}
if (method_exists($this, 'configuration_validation')) {
$errors = $this->configuration_validation($data, $files);
$newerrors = $this->configuration_validation($data, $files, $errors);
// We need to selectiviliy merge here
foreach ($newerrors as $element => $error) {
if (!array_key_exists($element, $errors)) {
$errors[$element] = $error;
}
}
}
return $errors;
+1
View File
@@ -357,6 +357,7 @@ class cachestore_static extends static_data_store implements cache_is_key_aware
*/
public function purge() {
$this->flush_store_by_id($this->storeid);
$this->store = &self::register_store_id($this->storeid);
}
/**
+1 -1
View File
@@ -61,7 +61,7 @@ foreach (get_plugin_list_with_file('cachestore', 'lib.php', true) as $plugin =>
$class = 'cachestore_'.$plugin;
$plugin = get_string('pluginname', 'cachestore_'.$plugin);
if (!class_exists($class) || !method_exists($class, 'initialise_test_instance')) {
if (!class_exists($class) || !method_exists($class, 'initialise_test_instance') || !$class::are_requirements_met()) {
$applicationtable->data[] = array($plugin, $strinvalidplugin, '-', '-', '-', '-');
$sessiontable->data[] = array($plugin, $strinvalidplugin, '-', '-', '-', '-');
$requesttable->data[] = array($plugin, $strinvalidplugin, '-', '-', '-', '-');
+42
View File
@@ -2977,6 +2977,48 @@ function calendar_update_subscription_events($subscriptionid) {
return $return;
}
/**
* Checks to see if the user can edit a given subscription feed.
*
* @param mixed $subscriptionorid Subscription object or id
* @return bool true if current user can edit the subscription else false
*/
function calendar_can_edit_subscription($subscriptionorid) {
global $DB;
if (is_array($subscriptionorid)) {
$subscription = (object)$subscriptionorid;
} else if (is_object($subscriptionorid)) {
$subscription = $subscriptionorid;
} else {
$subscription = $DB->get_record('event_subscriptions', array('id' => $subscriptionorid), '*', MUST_EXIST);
}
$allowed = new stdClass;
$courseid = $subscription->courseid;
$groupid = $subscription->groupid;
calendar_get_allowed_types($allowed, $courseid);
switch ($subscription->eventtype) {
case 'user':
return $allowed->user;
case 'course':
if (isset($allowed->courses[$courseid])) {
return $allowed->courses[$courseid];
} else {
return false;
}
case 'site':
return $allowed->site;
case 'group':
if (isset($allowed->groups[$groupid])) {
return $allowed->groups[$groupid];
} else {
return false;
}
default:
return false;
}
}
/**
* Update calendar subscriptions.
*
+6 -2
View File
@@ -78,11 +78,15 @@ if (!empty($formdata)) {
$importresults = calendar_update_subscription_events($subscriptionid);
}
// Redirect to prevent refresh issues.
redirect($PAGE->url);
redirect($PAGE->url, $importresults);
} else if (!empty($subscriptionid)) {
// The user is wanting to perform an action upon an existing subscription.
require_sesskey(); // Must have sesskey for all actions.
$importresults = calendar_process_subscription_row($subscriptionid, $pollinterval, $action);
if (calendar_can_edit_subscription($subscriptionid)) {
$importresults = calendar_process_subscription_row($subscriptionid, $pollinterval, $action);
} else {
print_error('nopermissions', 'error', $PAGE->url, get_string('managesubscriptions', 'calendar'));
}
}
$sql = 'SELECT *
+3
View File
@@ -736,6 +736,7 @@ class core_calendar_renderer extends plugin_renderer_base {
$table->head = array(
get_string('colcalendar', 'calendar'),
get_string('collastupdated', 'calendar'),
get_string('eventkind', 'calendar'),
get_string('colpoll', 'calendar'),
get_string('colactions', 'calendar')
);
@@ -762,10 +763,12 @@ class core_calendar_renderer extends plugin_renderer_base {
$cell = new html_table_cell($this->subscription_action_form($sub, $courseid));
$cell->colspan = 2;
$type = $sub->eventtype . 'events';
$table->data[] = new html_table_row(array(
new html_table_cell($label),
new html_table_cell($lastupdated),
new html_table_cell(get_string($type, 'calendar')),
$cell
));
}
+4 -2
View File
@@ -101,8 +101,10 @@ YUI.add('moodle-calendar-eventmanager', function(Y) {
},
node : {
setter : function(node) {
var n = Y.one('#'+node);
return n;
if (typeof(node) === 'string') {
node = Y.one('#'+node);
}
return node;
}
},
title : {
+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
@@ -38,7 +38,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
@@ -1,5 +1,5 @@
{
"require": {
"require-dev": {
"phpunit/phpunit": "3.7.*",
"phpunit/dbUnit": "1.2.*"
}
+1
View File
@@ -191,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
+8 -8
View File
@@ -442,6 +442,7 @@ M.course_dndupload = {
parent: modsel,
li: document.createElement('li'),
div: document.createElement('div'),
indentdiv: document.createElement('div'),
a: document.createElement('a'),
icon: document.createElement('img'),
namespan: document.createElement('span'),
@@ -452,24 +453,23 @@ M.course_dndupload = {
resel.li.className = 'activity resource modtype_resource';
resel.div.className = 'mod-indent';
resel.li.appendChild(resel.div);
resel.indentdiv.className = 'mod-indent';
resel.li.appendChild(resel.indentdiv);
resel.div.className = 'activityinstance';
resel.indentdiv.appendChild(resel.div);
resel.a.href = '#';
resel.div.appendChild(resel.a);
resel.icon.src = M.util.image_url('i/ajaxloader');
resel.icon.className = 'activityicon';
resel.icon.className = 'activityicon iconlarge';
resel.a.appendChild(resel.icon);
resel.a.appendChild(document.createTextNode(' '));
resel.namespan.className = 'instancename';
resel.namespan.innerHTML = name;
resel.a.appendChild(resel.namespan);
resel.div.appendChild(document.createTextNode(' '));
resel.groupingspan.className = 'groupinglabel';
resel.div.appendChild(resel.groupingspan);
@@ -738,7 +738,7 @@ M.course_dndupload = {
resel.div.removeChild(resel.progressouter);
resel.li.id = result.elementid;
resel.div.innerHTML += result.commands;
resel.indentdiv.innerHTML += result.commands;
if (result.onclick) {
resel.a.onclick = result.onclick;
}
+9
View File
@@ -555,6 +555,15 @@ class dndupload_ajax_processor {
$this->cm->groupmode = $this->course->groupmode;
$this->cm->groupingid = $this->course->defaultgroupingid;
// Set the correct default for completion tracking.
$this->cm->completion = COMPLETION_TRACKING_NONE;
$completion = new completion_info($this->course);
if ($completion->is_enabled()) {
if (plugin_supports('mod', $this->cm->modulename, FEATURE_MODEDIT_DEFAULT_COMPLETION, true)) {
$this->cm->completion = COMPLETION_TRACKING_MANUAL;
}
}
if (!$this->cm->id = add_course_module($this->cm)) {
throw new coding_exception("Unable to create the course module");
}
+1 -1
View File
@@ -211,7 +211,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'),
+44 -28
View File
@@ -594,7 +594,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);
@@ -665,7 +665,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));
@@ -694,7 +694,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);
@@ -779,7 +779,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));
@@ -808,7 +808,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);
@@ -1516,8 +1516,9 @@ function print_section($course, $section, $mods, $modnamesused, $absolute=false,
$textcss = '';
}
// Get on-click attribute value if specified
$onclick = $mod->get_on_click();
// Get on-click attribute value if specified and decode the onclick - it
// has already been encoded for display (puke).
$onclick = htmlspecialchars_decode($mod->get_on_click(), ENT_QUOTES);
$groupinglabel = '';
if (!empty($mod->groupingid) && has_capability('moodle/course:managegroups', context_course::instance($course->id))) {
@@ -1656,14 +1657,25 @@ function print_section($course, $section, $mods, $modnamesused, $absolute=false,
} else {
$extraclass = '';
}
echo "
<form class='togglecompletion$extraclass' method='post' action='".$CFG->wwwroot."/course/togglecompletion.php'><div>
<input type='hidden' name='id' value='{$mod->id}' />
<input type='hidden' name='modulename' value='".s($mod->name)."' />
<input type='hidden' name='sesskey' value='".sesskey()."' />
<input type='hidden' name='completionstate' value='$newstate' />
<input type='image' src='$imgsrc' alt='$imgalt' title='$imgtitle' />
</div></form>";
echo html_writer::start_tag('form', array(
'class' => 'togglecompletion' . $extraclass,
'method' => 'post',
'action' => $CFG->wwwroot . '/course/togglecompletion.php'));
echo html_writer::start_tag('div');
echo html_writer::empty_tag('input', array(
'type' => 'hidden', 'name' => 'id', 'value' => $mod->id));
echo html_writer::empty_tag('input', array(
'type' => 'hidden', 'name' => 'modulename',
'value' => $mod->name));
echo html_writer::empty_tag('input', array(
'type' => 'hidden', 'name' => 'sesskey', 'value' => sesskey()));
echo html_writer::empty_tag('input', array(
'type' => 'hidden', 'name' => 'completionstate',
'value' => $newstate));
echo html_writer::empty_tag('input', array(
'type' => 'image', 'src' => $imgsrc, 'alt' => $imgalt, 'title' => $imgtitle));
echo html_writer::end_tag('div');
echo html_writer::end_tag('form');
} else {
// In auto mode, or when editing, the icon is just an image
echo "<span class='autocompletion'>";
@@ -1683,17 +1695,20 @@ function print_section($course, $section, $mods, $modnamesused, $absolute=false,
if (!$mod->uservisible) {
echo '<div class="availabilityinfo">'.$mod->availableinfo.'</div>';
} else if ($canviewhidden && !empty($CFG->enableavailability)) {
$visibilityclass = '';
if (!$mod->visible) {
$visibilityclass = 'accesshide';
}
$ci = new condition_info($mod);
$fullinfo = $ci->get_full_information();
if($fullinfo) {
echo '<div class="availabilityinfo '.$visibilityclass.'">'.get_string($mod->showavailability
? 'userrestriction_visible'
: 'userrestriction_hidden','condition',
$fullinfo).'</div>';
// Don't add availability information if user is not editing and activity is hidden.
if ($mod->visible || $PAGE->user_is_editing()) {
$hidinfoclass = '';
if (!$mod->visible) {
$hidinfoclass = 'hide';
}
$ci = new condition_info($mod);
$fullinfo = $ci->get_full_information();
if($fullinfo) {
echo '<div class="availabilityinfo '.$hidinfoclass.'">'.get_string($mod->showavailability
? 'userrestriction_visible'
: 'userrestriction_hidden','condition',
$fullinfo).'</div>';
}
}
}
@@ -1830,7 +1845,7 @@ function print_section_add_menus($course, $section, $modnames = null, $vertical=
// The module chooser link
$modchooser = html_writer::start_tag('div', array('class' => 'mdl-right'));
$modchooser.= html_writer::start_tag('div', array('class' => 'section-modchooser'));
$icon = $OUTPUT->pix_icon('t/add', $straddeither);
$icon = $OUTPUT->pix_icon('t/add', '');
$span = html_writer::tag('span', $straddeither, array('class' => 'section-modchooser-text'));
$modchooser .= html_writer::tag('span', $icon . $span, array('class' => 'section-modchooser-link'));
$modchooser.= html_writer::end_tag('div');
@@ -4493,6 +4508,7 @@ function include_course_ajax($course, $usedmodules = array(), $enabledmodules =
'courseid' => $course->id,
'pagetype' => $PAGE->pagetype,
'pagelayout' => $PAGE->pagelayout,
'subpage' => $PAGE->subpage,
'regions' => $PAGE->blocks->get_regions(),
);
$PAGE->requires->yui_module('moodle-core-blocks', 'M.core_blocks.init_dragdrop', array($params), null, true);
@@ -4535,7 +4551,7 @@ function include_course_ajax($course, $usedmodules = array(), $enabledmodules =
// Add the module chooser
$PAGE->requires->yui_module('moodle-course-modchooser',
'M.course.init_chooser',
array(array('courseid' => $course->id))
array(array('courseid' => $course->id, 'closeButtonTitle' => get_string('close', 'editor')))
);
$PAGE->requires->strings_for_js(array(
'addresourceoractivity',
+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($renderer);

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