Merge branch 'MDL-36022-master' of git://git.luns.net.uk/moodle
authorDan Poltawski <dan@moodle.com>
Tue, 20 Nov 2012 08:04:08 +0000 (16:04 +0800)
committerDan Poltawski <dan@moodle.com>
Tue, 20 Nov 2012 08:04:08 +0000 (16:04 +0800)
734 files changed:
admin/courseformats.php [new file with mode: 0644]
admin/editors.php
admin/enrol.php
admin/index.php
admin/plugins.php
admin/renderer.php
admin/settings/courses.php
admin/settings/plugins.php
admin/settings/server.php
admin/user.php
auth/cas/auth.php
auth/cas/config.html
auth/cas/version.php
auth/ldap/auth.php
auth/ldap/config.html
auth/ldap/lang/en/auth_ldap.php
auth/ldap/version.php
backup/converter/moodle1/lib.php
backup/converter/moodle1/tests/lib_test.php
backup/moodle2/backup_local_plugin.class.php [moved from install/lang/en_fix/langconfig.php with 58% similarity]
backup/moodle2/backup_plan_builder.class.php
backup/moodle2/backup_stepslib.php
backup/moodle2/restore_local_plugin.class.php [new file with mode: 0644]
backup/moodle2/restore_plagiarism_plugin.class.php
backup/moodle2/restore_plan_builder.class.php
backup/moodle2/restore_stepslib.php
blocks/activity_modules/block_activity_modules.php
blocks/activity_modules/db/access.php
blocks/activity_modules/lang/en/block_activity_modules.php
blocks/activity_modules/version.php
blocks/admin_bookmarks/block_admin_bookmarks.php
blocks/blog_menu/block_blog_menu.php
blocks/blog_menu/db/access.php
blocks/blog_menu/lang/en/block_blog_menu.php
blocks/blog_menu/version.php
blocks/blog_recent/db/access.php
blocks/blog_recent/lang/en/block_blog_recent.php
blocks/blog_recent/version.php
blocks/blog_tags/db/access.php
blocks/blog_tags/lang/en/block_blog_tags.php
blocks/blog_tags/version.php
blocks/community/block_community.php
blocks/course_list/block_course_list.php
blocks/dock.js
blocks/feedback/db/access.php
blocks/feedback/lang/en/block_feedback.php
blocks/feedback/version.php
blocks/glossary_random/block_glossary_random.php
blocks/login/db/access.php
blocks/login/lang/en/block_login.php
blocks/login/version.php
blocks/moodleblock.class.php
blocks/navigation/block_navigation.php
blocks/navigation/styles.css
blocks/navigation/yui/navigation/navigation.js
blocks/participants/block_participants.php
blocks/participants/db/access.php
blocks/participants/lang/en/block_participants.php
blocks/participants/version.php
blocks/private_files/renderer.php
blocks/quiz_results/db/access.php
blocks/quiz_results/lang/en/block_quiz_results.php
blocks/quiz_results/version.php
blocks/recent_activity/db/access.php
blocks/recent_activity/lang/en/block_recent_activity.php
blocks/recent_activity/version.php
blocks/search_forums/block_search_forums.php
blocks/search_forums/db/access.php
blocks/search_forums/lang/en/block_search_forums.php
blocks/search_forums/version.php
blocks/section_links/db/access.php
blocks/section_links/lang/en/block_section_links.php
blocks/section_links/version.php
blocks/settings/block_settings.php
blocks/settings/renderer.php
blocks/settings/styles.css
blocks/site_main_menu/block_site_main_menu.php
blocks/site_main_menu/db/access.php
blocks/site_main_menu/lang/en/block_site_main_menu.php
blocks/site_main_menu/version.php
blocks/social_activities/db/access.php
blocks/social_activities/lang/en/block_social_activities.php
blocks/social_activities/version.php
blocks/tag_flickr/db/access.php
blocks/tag_flickr/lang/en/block_tag_flickr.php
blocks/tag_flickr/version.php
blocks/tag_youtube/db/access.php
blocks/tag_youtube/lang/en/block_tag_youtube.php
blocks/tag_youtube/version.php
cache/README.md
cache/admin.php
cache/classes/config.php
cache/classes/definition.php
cache/classes/dummystore.php
cache/classes/factory.php
cache/classes/helper.php
cache/classes/interfaces.php
cache/classes/loaders.php
cache/locallib.php
cache/stores/file/addinstanceform.php
cache/stores/file/lang/en/cachestore_file.php
cache/stores/file/lib.php
cache/stores/memcache/lib.php
cache/stores/memcached/lib.php
cache/stores/mongodb/lib.php
cache/stores/session/lib.php
cache/stores/static/lib.php
cache/testperformance.php
cache/tests/cache_test.php
cache/tests/locallib_test.php
calendar/lib.php
calendar/managesubscriptions_form.php
calendar/renderer.php
cohort/assign.php
comment/comment.js
course/category.php
course/dndupload.js
course/edit_form.php
course/format/formatlegacy.php
course/format/lib.php
course/format/renderer.php
course/format/scorm/config.php [deleted file]
course/format/scorm/lib.php
course/format/scorm/version.php
course/format/social/config.php [deleted file]
course/format/social/lib.php
course/format/social/version.php
course/format/topics/config.php [deleted file]
course/format/topics/lib.php
course/format/topics/styles.css
course/format/topics/version.php
course/format/upgrade.txt
course/format/weeks/config.php [deleted file]
course/format/weeks/lib.php
course/format/weeks/renderer.php
course/format/weeks/styles.css
course/format/weeks/version.php
course/index.php
course/lib.php
course/renderer.php
course/search.php
course/tests/courselib_test.php
course/yui/dragdrop/dragdrop.js
course/yui/toolboxes/toolboxes.js
enrol/flatfile/lib.php
enrol/ldap/lib.php
enrol/ldap/settings.php
enrol/ldap/settingslib.php
enrol/ldap/version.php
enrol/manual/lib.php
enrol/paypal/return.php
enrol/renderer.php
enrol/self/edit.php
enrol/self/edit_form.php
enrol/self/lib.php
enrol/tests/enrollib_test.php [new file with mode: 0644]
files/renderer.php
grade/edit/tree/calculation.php
grade/edit/tree/grade.php
grade/import/csv/index.php
grade/import/grade_import_form.php
grade/lib.php
grade/report/grader/index.php
grade/report/grader/lib.php
grade/report/user/lib.php
install.php
install/lang/hr/moodle.php
install/lang/lt/install.php [new file with mode: 0644]
install/lang/ms/moodle.php
lang/en/admin.php
lang/en/calendar.php
lang/en/editor.php
lang/en/error.php
lang/en/message.php
lang/en/moodle.php
lang/en/plugin.php
lang/en/portfolio.php
lang/en/repository.php
lang/en/role.php
lib/adminlib.php
lib/ajax/getnavbranch.php
lib/bennu/iCalendar_components.php
lib/bennu/readme_moodle.txt
lib/blocklib.php
lib/csslib.php
lib/csvlib.class.php
lib/db/access.php
lib/db/caches.php
lib/db/install.xml
lib/db/upgrade.php
lib/deprecatedlib.php
lib/eaccelerator.class.php [deleted file]
lib/editor/tinymce/lib.php
lib/editor/tinymce/plugins/dragmath/dragmath.php
lib/editor/tinymce/plugins/loader.php
lib/editor/tinymce/plugins/moodleemoticon/dialog.php
lib/editor/tinymce/plugins/spellchecker/classes/GoogleSpell.php
lib/editor/tinymce/readme_moodle.txt
lib/editor/tinymce/tiny_mce/3.5.7/plugins/inlinepopups/editor_plugin.js [deleted file]
lib/editor/tinymce/tiny_mce/3.5.7b/langs/en.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/langs/en.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/license.txt [moved from lib/editor/tinymce/tiny_mce/3.5.7/license.txt with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/advhr/css/advhr.css [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/advhr/css/advhr.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/advhr/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/advhr/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/advhr/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/advhr/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/advhr/js/rule.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/advhr/js/rule.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/advhr/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/advhr/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/advhr/rule.htm [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/advhr/rule.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/advimage/css/advimage.css [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/advimage/css/advimage.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/advimage/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/advimage/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/advimage/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/advimage/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/advimage/image.htm [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/advimage/image.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/advimage/img/sample.gif [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/advimage/img/sample.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/advimage/js/image.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/advimage/js/image.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/advimage/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/advimage/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/advlink/css/advlink.css [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/advlink/css/advlink.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/advlink/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/advlink/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/advlink/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/advlink/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/advlink/js/advlink.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/advlink/js/advlink.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/advlink/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/advlink/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/advlink/link.htm [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/advlink/link.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/advlist/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/advlist/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/advlist/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/advlist/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/autolink/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/autolink/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/autolink/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/autolink/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/autoresize/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/autoresize/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/autoresize/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/autoresize/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/autosave/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/autosave/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/autosave/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/autosave/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/autosave/langs/en.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/autosave/langs/en.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/bbcode/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/bbcode/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/bbcode/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/bbcode/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/contextmenu/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/contextmenu/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/contextmenu/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/contextmenu/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/directionality/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/directionality/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/directionality/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/directionality/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/emotions/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/emotions/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/emotions/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/emotions/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/emotions/emotions.htm [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/emotions/emotions.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/emotions/img/smiley-cool.gif [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/emotions/img/smiley-cool.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/emotions/img/smiley-cry.gif [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/emotions/img/smiley-cry.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/emotions/img/smiley-embarassed.gif [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/emotions/img/smiley-embarassed.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/emotions/img/smiley-foot-in-mouth.gif [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/emotions/img/smiley-foot-in-mouth.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/emotions/img/smiley-frown.gif [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/emotions/img/smiley-frown.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/emotions/img/smiley-innocent.gif [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/emotions/img/smiley-innocent.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/emotions/img/smiley-kiss.gif [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/emotions/img/smiley-kiss.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/emotions/img/smiley-laughing.gif [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/emotions/img/smiley-laughing.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/emotions/img/smiley-money-mouth.gif [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/emotions/img/smiley-money-mouth.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/emotions/img/smiley-sealed.gif [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/emotions/img/smiley-sealed.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/emotions/img/smiley-smile.gif [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/emotions/img/smiley-smile.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/emotions/img/smiley-surprised.gif [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/emotions/img/smiley-surprised.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/emotions/img/smiley-tongue-out.gif [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/emotions/img/smiley-tongue-out.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/emotions/img/smiley-undecided.gif [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/emotions/img/smiley-undecided.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/emotions/img/smiley-wink.gif [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/emotions/img/smiley-wink.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/emotions/img/smiley-yell.gif [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/emotions/img/smiley-yell.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/emotions/js/emotions.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/emotions/js/emotions.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/emotions/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/emotions/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/example/dialog.htm [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/example/dialog.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/example/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/example/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/example/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/example/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/example/img/example.gif [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/example/img/example.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/example/js/dialog.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/example/js/dialog.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/example/langs/en.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/example/langs/en.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/example/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/example/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/example_dependency/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/example_dependency/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/example_dependency/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/example_dependency/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/fullpage/css/fullpage.css [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/fullpage/css/fullpage.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/fullpage/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/fullpage/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/fullpage/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/fullpage/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/fullpage/fullpage.htm [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/fullpage/fullpage.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/fullpage/js/fullpage.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/fullpage/js/fullpage.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/fullpage/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/fullpage/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/fullscreen/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/fullscreen/editor_plugin.js with 54% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/fullscreen/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/fullscreen/editor_plugin_src.js with 96% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/fullscreen/fullscreen.htm [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/fullscreen/fullscreen.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/iespell/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/iespell/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/iespell/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/iespell/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/inlinepopups/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/inlinepopups/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/inlinepopups/editor_plugin_src.js with 96% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/inlinepopups/skins/clearlooks2/img/alert.gif [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/inlinepopups/skins/clearlooks2/img/alert.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/inlinepopups/skins/clearlooks2/img/button.gif [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/inlinepopups/skins/clearlooks2/img/button.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/inlinepopups/skins/clearlooks2/img/corners.gif [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/inlinepopups/skins/clearlooks2/img/corners.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/inlinepopups/skins/clearlooks2/window.css [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/inlinepopups/skins/clearlooks2/window.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/inlinepopups/template.htm [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/inlinepopups/template.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/insertdatetime/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/insertdatetime/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/insertdatetime/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/insertdatetime/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/layer/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/layer/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/layer/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/layer/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/legacyoutput/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/legacyoutput/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/legacyoutput/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/legacyoutput/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/lists/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/lists/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/lists/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/lists/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/media/css/media.css [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/media/css/media.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/media/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/media/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/media/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/media/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/media/js/embed.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/media/js/embed.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/media/js/media.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/media/js/media.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/media/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/media/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/media/media.htm [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/media/media.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/media/moxieplayer.swf [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/media/moxieplayer.swf with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/nonbreaking/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/nonbreaking/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/nonbreaking/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/nonbreaking/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/noneditable/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/noneditable/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/noneditable/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/noneditable/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/pagebreak/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/pagebreak/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/pagebreak/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/pagebreak/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/paste/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/paste/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/paste/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/paste/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/paste/js/pastetext.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/paste/js/pastetext.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/paste/js/pasteword.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/paste/js/pasteword.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/paste/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/paste/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/paste/pastetext.htm [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/paste/pastetext.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/paste/pasteword.htm [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/paste/pasteword.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/preview/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/preview/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/preview/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/preview/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/preview/example.html [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/preview/example.html with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/preview/jscripts/embed.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/preview/jscripts/embed.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/preview/preview.html [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/preview/preview.html with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/print/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/print/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/print/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/print/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/save/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/save/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/save/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/save/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/searchreplace/css/searchreplace.css [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/searchreplace/css/searchreplace.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/searchreplace/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/searchreplace/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/searchreplace/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/searchreplace/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/searchreplace/js/searchreplace.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/searchreplace/js/searchreplace.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/searchreplace/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/searchreplace/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/searchreplace/searchreplace.htm [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/searchreplace/searchreplace.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/spellchecker/css/content.css [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/spellchecker/css/content.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/spellchecker/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/spellchecker/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/spellchecker/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/spellchecker/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/spellchecker/img/wline.gif [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/spellchecker/img/wline.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/style/css/props.css [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/style/css/props.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/style/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/style/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/style/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/style/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/style/js/props.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/style/js/props.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/style/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/style/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/style/props.htm [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/style/props.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/style/readme.txt [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/style/readme.txt with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/tabfocus/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/tabfocus/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/tabfocus/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/tabfocus/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/table/cell.htm [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/table/cell.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/table/css/cell.css [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/table/css/cell.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/table/css/row.css [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/table/css/row.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/table/css/table.css [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/table/css/table.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/table/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/table/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/table/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/table/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/table/js/cell.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/table/js/cell.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/table/js/merge_cells.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/table/js/merge_cells.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/table/js/row.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/table/js/row.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/table/js/table.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/table/js/table.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/table/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/table/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/table/merge_cells.htm [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/table/merge_cells.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/table/row.htm [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/table/row.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/table/table.htm [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/table/table.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/template/blank.htm [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/template/blank.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/template/css/template.css [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/template/css/template.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/template/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/template/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/template/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/template/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/template/js/template.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/template/js/template.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/template/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/template/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/template/template.htm [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/template/template.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/visualblocks/css/visualblocks.css [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/visualblocks/css/visualblocks.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/visualblocks/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/visualblocks/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/visualblocks/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/visualblocks/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/visualchars/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/visualchars/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/visualchars/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/visualchars/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/wordcount/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/wordcount/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/wordcount/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/wordcount/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/xhtmlxtras/abbr.htm [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/xhtmlxtras/abbr.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/xhtmlxtras/acronym.htm [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/xhtmlxtras/acronym.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/xhtmlxtras/attributes.htm [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/xhtmlxtras/attributes.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/xhtmlxtras/cite.htm [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/xhtmlxtras/cite.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/xhtmlxtras/css/attributes.css [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/xhtmlxtras/css/attributes.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/xhtmlxtras/css/popup.css [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/xhtmlxtras/css/popup.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/xhtmlxtras/del.htm [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/xhtmlxtras/del.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/xhtmlxtras/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/xhtmlxtras/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/xhtmlxtras/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/xhtmlxtras/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/xhtmlxtras/ins.htm [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/xhtmlxtras/ins.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/xhtmlxtras/js/abbr.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/xhtmlxtras/js/abbr.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/xhtmlxtras/js/acronym.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/xhtmlxtras/js/acronym.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/xhtmlxtras/js/attributes.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/xhtmlxtras/js/attributes.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/xhtmlxtras/js/cite.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/xhtmlxtras/js/cite.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/xhtmlxtras/js/del.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/xhtmlxtras/js/del.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/xhtmlxtras/js/element_common.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/xhtmlxtras/js/element_common.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/xhtmlxtras/js/ins.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/xhtmlxtras/js/ins.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/plugins/xhtmlxtras/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/plugins/xhtmlxtras/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/about.htm [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/about.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/anchor.htm [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/anchor.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/charmap.htm [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/charmap.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/color_picker.htm [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/color_picker.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/editor_template.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/editor_template.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/editor_template_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/editor_template_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/image.htm [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/image.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/img/colorpicker.jpg [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/img/colorpicker.jpg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/img/flash.gif [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/img/flash.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/img/icons.gif [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/img/icons.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/img/iframe.gif [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/img/iframe.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/img/pagebreak.gif [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/img/pagebreak.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/img/quicktime.gif [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/img/quicktime.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/img/realmedia.gif [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/img/realmedia.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/img/shockwave.gif [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/img/shockwave.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/img/trans.gif [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/img/trans.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/img/video.gif [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/img/video.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/img/windowsmedia.gif [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/img/windowsmedia.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/js/about.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/js/about.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/js/anchor.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/js/anchor.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/js/charmap.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/js/charmap.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/js/color_picker.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/js/color_picker.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/js/image.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/js/image.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/js/link.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/js/link.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/js/source_editor.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/js/source_editor.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/langs/en.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/langs/en.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/link.htm [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/link.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/shortcuts.htm [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/shortcuts.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/skins/default/content.css [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/skins/default/content.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/skins/default/dialog.css [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/skins/default/dialog.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/skins/default/img/buttons.png [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/skins/default/img/buttons.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/skins/default/img/items.gif [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/skins/default/img/items.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/skins/default/img/menu_arrow.gif [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/skins/default/img/menu_arrow.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/skins/default/img/menu_check.gif [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/skins/default/img/menu_check.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/skins/default/img/progress.gif [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/skins/default/img/progress.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/skins/default/img/tabs.gif [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/skins/default/img/tabs.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/skins/default/ui.css [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/skins/default/ui.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/skins/highcontrast/content.css [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/skins/highcontrast/content.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/skins/highcontrast/dialog.css [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/skins/highcontrast/dialog.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/skins/highcontrast/ui.css [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/skins/highcontrast/ui.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/skins/o2k7/content.css [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/skins/o2k7/content.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/skins/o2k7/dialog.css [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/skins/o2k7/dialog.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/skins/o2k7/img/button_bg.png [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/skins/o2k7/img/button_bg.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/skins/o2k7/img/button_bg_black.png [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/skins/o2k7/img/button_bg_black.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/skins/o2k7/img/button_bg_silver.png [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/skins/o2k7/img/button_bg_silver.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/skins/o2k7/ui.css [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/skins/o2k7/ui.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/skins/o2k7/ui_black.css [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/skins/o2k7/ui_black.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/skins/o2k7/ui_silver.css [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/skins/o2k7/ui_silver.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/advanced/source_editor.htm [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/advanced/source_editor.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/simple/editor_template.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/simple/editor_template.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/simple/editor_template_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/simple/editor_template_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/simple/img/icons.gif [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/simple/img/icons.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/simple/langs/en.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/simple/langs/en.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/simple/skins/default/content.css [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/simple/skins/default/content.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/simple/skins/default/ui.css [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/simple/skins/default/ui.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/simple/skins/o2k7/content.css [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/simple/skins/o2k7/content.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/simple/skins/o2k7/img/button_bg.png [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/simple/skins/o2k7/img/button_bg.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/themes/simple/skins/o2k7/ui.css [moved from lib/editor/tinymce/tiny_mce/3.5.7/themes/simple/skins/o2k7/ui.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/tiny_mce.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/tiny_mce.js with 59% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/tiny_mce_popup.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/tiny_mce_popup.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/tiny_mce_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/tiny_mce_src.js with 96% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/utils/editable_selects.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/utils/editable_selects.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/utils/form_utils.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/utils/form_utils.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/utils/mctabs.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/utils/mctabs.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.7b/utils/validate.js [moved from lib/editor/tinymce/tiny_mce/3.5.7/utils/validate.js with 100% similarity]
lib/editor/tinymce/version.php
lib/enrollib.php
lib/filelib.php
lib/form/dndupload.js
lib/form/editor.php
lib/form/filemanager.js
lib/form/filemanager.php
lib/formslib.php
lib/googleapi.php
lib/grade/grade_item.php
lib/grade/tests/grade_item_test.php
lib/gradelib.php
lib/installlib.php
lib/javascript-static.js
lib/jslib.php
lib/ldaplib.php
lib/memcached.class.php [deleted file]
lib/messagelib.php
lib/minify/lib/JSMin.php [deleted file]
lib/minify/readme_moodle.txt
lib/modinfolib.php
lib/moodlelib.php
lib/navigationlib.php
lib/outputcomponents.php
lib/outputlib.php
lib/outputrenderers.php
lib/pagelib.php
lib/phpunit/classes/data_generator.php
lib/phpunit/classes/util.php
lib/phpunit/tests/generator_test.php
lib/pluginlib.php
lib/portfolio/exporter.php
lib/portfoliolib.php
lib/setup.php
lib/setuplib.php
lib/statslib.php
lib/tablelib.php
lib/tests/accesslib_test.php
lib/tests/csvclass_test.php
lib/tests/fixtures/statslib-test00.xml [new file with mode: 0644]
lib/tests/fixtures/statslib-test01.xml [new file with mode: 0644]
lib/tests/fixtures/statslib-test02.xml [new file with mode: 0644]
lib/tests/fixtures/statslib-test03.xml [new file with mode: 0644]
lib/tests/fixtures/statslib-test04.xml [new file with mode: 0644]
lib/tests/fixtures/statslib-test05.xml [new file with mode: 0644]
lib/tests/fixtures/statslib-test06.xml [new file with mode: 0644]
lib/tests/fixtures/statslib-test07.xml [new file with mode: 0644]
lib/tests/fixtures/statslib-test08.xml [new file with mode: 0644]
lib/tests/fixtures/statslib-test09.xml [new file with mode: 0644]
lib/tests/fixtures/statslib-test10.xml [new file with mode: 0644]
lib/tests/fixtures/tabfile.csv [new file with mode: 0644]
lib/tests/gradelib_test.php [new file with mode: 0644]
lib/tests/messagelib_test.php [new file with mode: 0644]
lib/tests/modinfolib_test.php [new file with mode: 0644]
lib/tests/moodlelib_test.php
lib/tests/outputcomponents_test.php
lib/tests/outputlib_test.php
lib/tests/pluginlib_test.php
lib/tests/setuplib_test.php
lib/tests/statslib_test.php [new file with mode: 0644]
lib/upgradelib.php
lib/weblib.php
lib/yui/dragdrop/dragdrop.js
mdeploy.php [new file with mode: 0644]
mdeploytest.php [new file with mode: 0644]
message/lib.php
mod/assign/gradingtable.php
mod/assign/locallib.php
mod/assign/module.js
mod/assign/portfolio_callback.php [deleted file]
mod/assign/renderable.php
mod/assignment/lib.php
mod/assignment/renderer.php
mod/assignment/type/online/assignment.class.php
mod/chat/lib.php
mod/chat/report.php
mod/chat/upgrade.txt [new file with mode: 0644]
mod/data/field/url/field.class.php
mod/data/import.php
mod/data/lib.php
mod/data/preset.php
mod/data/view.php
mod/feedback/lib.php
mod/forum/discuss.php
mod/forum/lib.php
mod/glossary/export.php
mod/glossary/lib.php
mod/lesson/essay.php
mod/lesson/format.php
mod/lti/tests/generator/lib.php [new file with mode: 0644]
mod/lti/tests/generator_test.php [new file with mode: 0644]
mod/quiz/lib.php
mod/quiz/styles.css
mod/quiz/tests/generator/lib.php [new file with mode: 0644]
mod/scorm/datamodel.php
mod/scorm/loadSCO.php
mod/scorm/mod_form.php
mod/survey/lang/en/survey.php
mod/url/lib.php
mod/url/locallib.php
mod/workshop/lang/en/workshop.php
mod/workshop/locallib.php
mod/workshop/renderer.php
mod/workshop/styles.css
mod/workshop/view.php
pix/docs.png [new file with mode: 0644]
pix/docs.svg [new file with mode: 0644]
pix/help.png
pix/help.svg
pix/i/assignroles.png [new file with mode: 0644]
pix/i/assignroles.svg [new file with mode: 0644]
pix/i/backup.png [new file with mode: 0644]
pix/i/backup.svg [new file with mode: 0644]
pix/i/checkpermissions.png [new file with mode: 0644]
pix/i/checkpermissions.svg [new file with mode: 0644]
pix/i/cohort.png [new file with mode: 0644]
pix/i/cohort.svg [new file with mode: 0644]
pix/i/down.png [new file with mode: 0644]
pix/i/down.svg [new file with mode: 0644]
pix/i/dragdrop.png [new file with mode: 0644]
pix/i/dragdrop.svg [new file with mode: 0644]
pix/i/edit.png [new file with mode: 0644]
pix/i/edit.svg [new file with mode: 0644]
pix/i/enrolusers.png [new file with mode: 0644]
pix/i/enrolusers.svg [new file with mode: 0644]
pix/i/export.png [new file with mode: 0644]
pix/i/export.svg [new file with mode: 0644]
pix/i/filter.png [new file with mode: 0644]
pix/i/filter.svg [new file with mode: 0644]
pix/i/grades.png [new file with mode: 0644]
pix/i/grades.svg [new file with mode: 0644]
pix/i/group.png [new file with mode: 0644]
pix/i/group.svg [new file with mode: 0644]
pix/i/import.png [new file with mode: 0644]
pix/i/import.svg [new file with mode: 0644]
pix/i/info.png [new file with mode: 0644]
pix/i/info.svg [new file with mode: 0644]
pix/i/item.png [new file with mode: 0644]
pix/i/item.svg [new file with mode: 0644]
pix/i/navigationitem.png
pix/i/navigationitem.svg [new file with mode: 0644]
pix/i/outcomes.png [new file with mode: 0644]
pix/i/outcomes.svg [new file with mode: 0644]
pix/i/permissions.png [new file with mode: 0644]
pix/i/permissions.svg [new file with mode: 0644]
pix/i/publish.png
pix/i/publish.svg [new file with mode: 0644]
pix/i/report.png [new file with mode: 0644]
pix/i/report.svg [new file with mode: 0644]
pix/i/repository.png
pix/i/repository.svg [new file with mode: 0644]
pix/i/restore.png [new file with mode: 0644]
pix/i/restore.svg [new file with mode: 0644]
pix/i/return.png [new file with mode: 0644]
pix/i/return.svg [new file with mode: 0644]
pix/i/rss.png [new file with mode: 0644]
pix/i/rss.svg [new file with mode: 0644]
pix/i/scales.png [new file with mode: 0644]
pix/i/scales.svg [new file with mode: 0644]
pix/i/settings.png [new file with mode: 0644]
pix/i/settings.svg [new file with mode: 0644]
pix/i/switchrole.png [new file with mode: 0644]
pix/i/switchrole.svg [new file with mode: 0644]
pix/i/up.png [new file with mode: 0644]
pix/i/up.svg [new file with mode: 0644]
pix/i/user.png [new file with mode: 0644]
pix/i/user.svg [new file with mode: 0644]
pix/i/users.png [new file with mode: 0644]
pix/i/users.svg [new file with mode: 0644]
pix/i/withsubcat.png
pix/i/withsubcat.svg [new file with mode: 0644]
pix/t/assignroles.png [moved from pix/i/roles.png with 100% similarity]
pix/t/assignroles.svg [moved from pix/i/roles.svg with 100% similarity]
pix/t/backup.png [new file with mode: 0644]
pix/t/backup.svg [new file with mode: 0644]
pix/t/block_to_dock.png
pix/t/block_to_dock.svg [new file with mode: 0644]
pix/t/block_to_dock_rtl.png [new file with mode: 0644]
pix/t/block_to_dock_rtl.svg [new file with mode: 0644]
pix/t/cohort.png [new file with mode: 0644]
pix/t/cohort.svg [new file with mode: 0644]
pix/t/collapsed.png
pix/t/collapsed.svg [new file with mode: 0644]
pix/t/collapsed_empty.png
pix/t/collapsed_empty.svg [new file with mode: 0644]
pix/t/collapsed_empty_rtl.png
pix/t/collapsed_empty_rtl.svg [new file with mode: 0644]
pix/t/collapsed_rtl.png
pix/t/collapsed_rtl.svg [new file with mode: 0644]
pix/t/dock_to_block.png
pix/t/dock_to_block.svg [new file with mode: 0644]
pix/t/dock_to_block_rtl.png [new file with mode: 0644]
pix/t/dock_to_block_rtl.svg [new file with mode: 0644]
pix/t/dockclose.png
pix/t/dockclose.svg [new file with mode: 0644]
pix/t/down.png
pix/t/down.svg
pix/t/enrolusers.png [new file with mode: 0644]
pix/t/enrolusers.svg [new file with mode: 0644]
pix/t/expanded.png
pix/t/expanded.svg [new file with mode: 0644]
pix/t/restore.png [new file with mode: 0644]
pix/t/restore.svg [new file with mode: 0644]
pix/t/sort_asc.png [new file with mode: 0644]
pix/t/sort_asc.svg [new file with mode: 0644]
pix/t/sort_desc.png [new file with mode: 0644]
pix/t/sort_desc.svg [new file with mode: 0644]
pix/t/switch_minus.png [new file with mode: 0644]
pix/t/switch_minus.svg [new file with mode: 0644]
pix/t/switch_plus.png [new file with mode: 0644]
pix/t/switch_plus.svg [new file with mode: 0644]
pix/t/up.png
pix/t/up.svg
portfolio/add.php
portfolio/upgrade.txt
question/behaviour/rendererbase.php
question/editlib.php
question/format/xml/format.php
question/type/match/backup/moodle2/restore_qtype_match_plugin.class.php
question/type/multichoice/question.php
question/type/multichoice/tests/question_test.php
repository/alfresco/lang/en/repository_alfresco.php
repository/alfresco/lib.php
repository/draftfiles_manager.php
repository/filepicker.js
repository/filepicker.php
repository/lib.php
repository/repository_ajax.php
repository/upgrade.txt
repository/upload/lib.php
theme/afterburner/config.php
theme/afterburner/layout/default.php
theme/anomaly/config.php
theme/anomaly/layout/general.php
theme/anomaly/layout/report.php
theme/arialist/config.php
theme/arialist/layout/general.php
theme/arialist/layout/report.php
theme/base/config.php
theme/base/layout/general.php
theme/base/layout/report.php
theme/base/style/admin.css
theme/base/style/blocks.css
theme/base/style/core.css
theme/base/style/course.css
theme/base/style/dock.css
theme/binarius/config.php
theme/binarius/layout/general.php
theme/binarius/layout/report.php
theme/boxxie/config.php
theme/boxxie/layout/general.php
theme/brick/config.php
theme/brick/layout/general.php
theme/canvas/config.php
theme/canvas/layout/general.php
theme/canvas/layout/report.php
theme/formal_white/layout/frontpage.php
theme/formal_white/layout/general.php
theme/formal_white/layout/report.php
theme/formal_white/style/formal_white.css
theme/formal_white/style/frame.css
theme/fusion/style/core.css
theme/magazine/style/core.css
theme/mymobile/style/jmobile11_rtl.css
theme/sky_high/pix/footer-rtl.jpg [new file with mode: 0644]
theme/sky_high/pix/header-rtl.jpg [new file with mode: 0644]
theme/sky_high/style/core.css
theme/standard/style/blocks.css
theme/standard/style/core.css
theme/standard/style/course.css
theme/standard/style/css3.css
theme/standard/style/dock.css
theme/upgrade.txt
user/files.php
user/files_form.php
user/portfoliologs.php
user/selector/lib.php
version.php

diff --git a/admin/courseformats.php b/admin/courseformats.php
new file mode 100644 (file)
index 0000000..a8377de
--- /dev/null
@@ -0,0 +1,131 @@
+<?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/>.
+
+/**
+ * Allows the admin to enable, disable and uninstall course formats
+ *
+ * @package    core_admin
+ * @copyright  2012 Marina Glancy
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+require_once('../config.php');
+require_once($CFG->libdir.'/adminlib.php');
+require_once($CFG->libdir.'/pluginlib.php');
+
+$action  = required_param('action', PARAM_ALPHANUMEXT);
+$formatname   = required_param('format', PARAM_PLUGIN);
+$confirm = optional_param('confirm', 0, PARAM_BOOL);
+
+$syscontext = context_system::instance();
+$PAGE->set_url('/admin/courseformats.php');
+$PAGE->set_context($syscontext);
+
+require_login();
+require_capability('moodle/site:config', $syscontext);
+require_sesskey();
+
+$return = new moodle_url('/admin/settings.php', array('section' => 'manageformats'));
+
+$allplugins = plugin_manager::instance()->get_plugins();
+$formatplugins = $allplugins['format'];
+$sortorder = array_flip(array_keys($formatplugins));
+
+if (!isset($formatplugins[$formatname])) {
+    print_error('courseformatnotfound', 'error', $return, $formatname);
+}
+
+switch ($action) {
+    case 'disable':
+        if ($formatplugins[$formatname]->is_enabled()) {
+            if (get_config('moodlecourse', 'format') === $formatname) {
+                print_error('cannotdisableformat', 'error', $return);
+            }
+            set_config('disabled', 1, 'format_'. $formatname);
+        }
+        break;
+    case 'enable':
+        if (!$formatplugins[$formatname]->is_enabled()) {
+            unset_config('disabled', 'format_'. $formatname);
+        }
+        break;
+    case 'up':
+        if ($sortorder[$formatname]) {
+            $currentindex = $sortorder[$formatname];
+            $seq = array_keys($formatplugins);
+            $seq[$currentindex] = $seq[$currentindex-1];
+            $seq[$currentindex-1] = $formatname;
+            set_config('format_plugins_sortorder', implode(',', $seq));
+        }
+        break;
+    case 'down':
+        if ($sortorder[$formatname] < count($sortorder)-1) {
+            $currentindex = $sortorder[$formatname];
+            $seq = array_keys($formatplugins);
+            $seq[$currentindex] = $seq[$currentindex+1];
+            $seq[$currentindex+1] = $formatname;
+            set_config('format_plugins_sortorder', implode(',', $seq));
+        }
+        break;
+    case 'uninstall':
+        echo $OUTPUT->header();
+        echo $OUTPUT->heading(get_string('courseformats', 'moodle'));
+
+        $coursecount = $DB->count_records('course', array('format' => $formatname));
+        if ($coursecount) {
+            // Check that default format is set. It will be used to convert courses
+            // using this format
+            $defaultformat = get_config('moodlecourse', 'format');
+            $defaultformat = $formatplugins[get_config('moodlecourse', 'format')];
+            if (!$defaultformat) {
+                echo $OUTPUT->error_text(get_string('defaultformatnotset', 'admin'));
+                echo $OUTPUT->footer();
+                exit;
+            }
+        }
+
+        $format = $formatplugins[$formatname];
+        $deleteurl = $format->get_uninstall_url();
+        if (!$deleteurl) {
+            // somebody was trying to cheat and type non-existing link
+            echo $OUTPUT->error_text(get_string('cannotuninstall', 'admin', $format->displayname));
+            echo $OUTPUT->footer();
+            exit;
+        }
+
+        if (!$confirm) {
+            if ($coursecount) {
+                $message = get_string('formatuninstallwithcourses', 'admin',
+                        (object)array('count' => $coursecount, 'format' => $format->displayname,
+                            'defaultformat' => $defaultformat->displayname));
+            } else {
+                $message = get_string('formatuninstallconfirm', 'admin', $format->displayname);
+            }
+            $deleteurl->param('confirm', 1);
+            echo $OUTPUT->confirm($message, $deleteurl, $return);
+        } else {
+            $a = new stdClass();
+            $a->plugin = $format->displayname;
+            $a->directory = $format->rootdir;
+            uninstall_plugin('format', $formatname);
+            echo $OUTPUT->notification(get_string('formatuninstalled', 'admin', $a), 'notifysuccess');
+            echo $OUTPUT->continue_button($return);
+        }
+
+        echo $OUTPUT->footer();
+        exit;
+}
+redirect($return);
index 1a8f530..f6e68ff 100644 (file)
@@ -8,14 +8,18 @@ require_once('../config.php');
 require_once($CFG->libdir.'/adminlib.php');
 require_once($CFG->libdir.'/tablelib.php');
 
+$action  = required_param('action', PARAM_ALPHANUMEXT);
+$editor  = required_param('editor', PARAM_PLUGIN);
+$confirm = optional_param('confirm', 0, PARAM_BOOL);
+
+$PAGE->set_url('/admin/editors.php', array('action'=>$action, 'editor'=>$editor));
+$PAGE->set_context(context_system::instance());
+
 require_login();
 require_capability('moodle/site:config', context_system::instance());
 
 $returnurl = "$CFG->wwwroot/$CFG->admin/settings.php?section=manageeditors";
 
-$action = optional_param('action', '', PARAM_ALPHANUMEXT);
-$editor = optional_param('editor', '', PARAM_PLUGIN);
-
 // get currently installed and enabled auth plugins
 $available_editors = editors_get_available();
 if (!empty($editor) and empty($available_editors[$editor])) {
@@ -78,6 +82,48 @@ switch ($action) {
             }
         }
         break;
+
+    case 'uninstall':
+        if ($editor === 'textarea') {
+            redirect($returnurl);
+        }
+        if (get_string_manager()->string_exists('pluginname', 'editor_'.$editor)) {
+            $strplugin = get_string('pluginname', 'editor_'.$editor);
+        } else {
+            $strplugin = $editor;
+        }
+
+        $PAGE->set_title($strplugin);
+        echo $OUTPUT->header();
+
+        if (!$confirm) {
+            echo $OUTPUT->heading(get_string('editors', 'core_editor'));
+
+            $deleteurl = new moodle_url('/admin/editors.php', array('action'=>'uninstall', 'editor'=>$editor, 'sesskey'=>sesskey(), 'confirm'=>1));
+
+            echo $OUTPUT->confirm(get_string('editordeleteconfirm', 'core_editor', $strplugin),
+                $deleteurl, $returnurl);
+            echo $OUTPUT->footer();
+            die();
+
+        } else {
+            // Remove from enabled list.
+            $key = array_search($editor, $active_editors);
+            unset($active_editors[$key]);
+            set_config('texteditors', implode(',', $active_editors));
+
+            // Delete everything!!
+            uninstall_plugin('editor', $editor);
+
+            $a = new stdClass();
+            $a->name = $strplugin;
+            $a->directory = "$CFG->dirroot/lib/editor/$editor";
+            echo $OUTPUT->notification(get_string('plugindeletefiles', '', $a), 'notifysuccess');
+            echo $OUTPUT->continue_button($returnurl);
+            echo $OUTPUT->footer();
+            die();
+        }
+
     default:
         break;
 }
index b0818dd..10062a1 100644 (file)
@@ -103,7 +103,7 @@ switch ($action) {
             $strplugin = $enrol;
         }
 
-        echo $PAGE->set_title($strplugin);
+        $PAGE->set_title($strplugin);
         echo $OUTPUT->header();
 
         if (!$confirm) {
index 410cbf6..2f88126 100644 (file)
@@ -261,6 +261,18 @@ if ($version > $CFG->version) {  // upgrade
         }
 
         $output = $PAGE->get_renderer('core', 'admin');
+
+        $deployer = available_update_deployer::instance();
+        if ($deployer->enabled()) {
+            $deployer->initialize($reloadurl, $reloadurl);
+
+            $deploydata = $deployer->submitted_data();
+            if (!empty($deploydata)) {
+                echo $output->upgrade_plugin_confirm_deploy_page($deployer, $deploydata);
+                die();
+            }
+        }
+
         echo $output->upgrade_plugin_check_page(plugin_manager::instance(), available_update_checker::instance(),
                 $version, $showallplugins, $reloadurl,
                 new moodle_url('/admin/index.php', array('confirmupgrade'=>1, 'confirmrelease'=>1, 'confirmplugincheck'=>1)));
@@ -305,6 +317,17 @@ if (moodle_needs_upgrading()) {
 
             $output = $PAGE->get_renderer('core', 'admin');
 
+            $deployer = available_update_deployer::instance();
+            if ($deployer->enabled()) {
+                $deployer->initialize($PAGE->url, $PAGE->url);
+
+                $deploydata = $deployer->submitted_data();
+                if (!empty($deploydata)) {
+                    echo $output->upgrade_plugin_confirm_deploy_page($deployer, $deploydata);
+                    die();
+                }
+            }
+
             // check plugin dependencies first
             $failed = array();
             if (!plugin_manager::instance()->all_plugins_ok($version, $failed)) {
@@ -416,9 +439,30 @@ $cronoverdue = ($lastcron < time() - 3600 * 24);
 $dbproblems = $DB->diagnose();
 $maintenancemode = !empty($CFG->maintenance_enabled);
 
+// Available updates for Moodle core
 $updateschecker = available_update_checker::instance();
-$availableupdates = $updateschecker->get_update_info('core',
+$availableupdates = array();
+$availableupdates['core'] = $updateschecker->get_update_info('core',
     array('minmaturity' => $CFG->updateminmaturity, 'notifybuilds' => $CFG->updatenotifybuilds));
+
+// Available updates for contributed plugins
+$pluginman = plugin_manager::instance();
+foreach ($pluginman->get_plugins() as $plugintype => $plugintypeinstances) {
+    foreach ($plugintypeinstances as $pluginname => $plugininfo) {
+        if (!empty($plugininfo->availableupdates)) {
+            foreach ($plugininfo->availableupdates as $pluginavailableupdate) {
+                if ($pluginavailableupdate->version > $plugininfo->versiondisk) {
+                    if (!isset($availableupdates[$plugintype.'_'.$pluginname])) {
+                        $availableupdates[$plugintype.'_'.$pluginname] = array();
+                    }
+                    $availableupdates[$plugintype.'_'.$pluginname][] = $pluginavailableupdate;
+                }
+            }
+        }
+    }
+}
+
+// The timestamp of the most recent check for available updates
 $availableupdatesfetch = $updateschecker->get_last_timefetched();
 
 $buggyiconvnomb = (!function_exists('mb_convert_encoding') and @iconv('UTF-8', 'UTF-8//IGNORE', '100'.chr(130).'€') !== '100€');
index 8da3fd7..4a99a29 100644 (file)
@@ -32,15 +32,36 @@ require_capability('moodle/site:config', context_system::instance());
 admin_externalpage_setup('pluginsoverview');
 
 $fetchremote = optional_param('fetchremote', false, PARAM_BOOL);
+$updatesonly = optional_param('updatesonly', false, PARAM_BOOL);
+$contribonly = optional_param('contribonly', false, PARAM_BOOL);
 
 $pluginman = plugin_manager::instance();
 $checker = available_update_checker::instance();
 
+// Filtering options.
+$options = array(
+    'updatesonly' => $updatesonly,
+    'contribonly' => $contribonly,
+);
+
 if ($fetchremote) {
     require_sesskey();
     $checker->fetch();
-    redirect($PAGE->url);
+    redirect(new moodle_url($PAGE->url, $options));
 }
 
 $output = $PAGE->get_renderer('core', 'admin');
-echo $output->plugin_management_page($pluginman, $checker);
+
+$deployer = available_update_deployer::instance();
+if ($deployer->enabled()) {
+    $myurl = new moodle_url($PAGE->url, array('updatesonly' => $updatesonly, 'contribonly' => $contribonly));
+    $deployer->initialize($myurl, $myurl);
+
+    $deploydata = $deployer->submitted_data();
+    if (!empty($deploydata)) {
+        echo $output->upgrade_plugin_confirm_deploy_page($deployer, $deploydata);
+        die();
+    }
+}
+
+echo $output->plugin_management_page($pluginman, $checker, $options);
index 293bf52..7ca6ea2 100644 (file)
@@ -234,6 +234,62 @@ class core_admin_renderer extends plugin_renderer_base {
         return $output;
     }
 
+    /**
+     * Prints a page with a summary of plugin deployment to be confirmed.
+     *
+     * @param available_update_deployer $deployer
+     * @param array $data deployer's data package as returned by {@link available_update_deployer::submitted_data()}
+     * @return string
+     */
+    public function upgrade_plugin_confirm_deploy_page(available_update_deployer $deployer, array $data) {
+
+        if (!$deployer->initialized()) {
+            throw new coding_exception('Unable to render a page for non-initialized deployer.');
+        }
+
+        if (empty($data['updateinfo'])) {
+            throw new coding_exception('Missing required data component.');
+        }
+
+        $updateinfo = $data['updateinfo'];
+
+        $output  = '';
+        $output .= $this->header();
+        $output .= $this->container_start('generalbox updateplugin', 'notice');
+
+        $a = new stdClass();
+        if (get_string_manager()->string_exists('pluginname', $updateinfo->component)) {
+            $a->name = get_string('pluginname', $updateinfo->component);
+        } else {
+            $a->name = $updateinfo->component;
+        }
+
+        if (isset($updateinfo->release)) {
+            $a->version = $updateinfo->release . ' (' . $updateinfo->version . ')';
+        } else {
+            $a->version = $updateinfo->version;
+        }
+        $a->url = $updateinfo->download;
+
+        $output .= $this->output->heading(get_string('updatepluginconfirm', 'core_plugin'));
+        $output .= $this->output->container(format_text(get_string('updatepluginconfirminfo', 'core_plugin', $a)), 'updatepluginconfirminfo');
+        $output .= $this->output->container(get_string('updatepluginconfirmwarning', 'core_plugin', 'updatepluginconfirmwarning'));
+
+        if ($repotype = $deployer->plugin_external_source($data['updateinfo'])) {
+            $output .= $this->output->container(get_string('updatepluginconfirmexternal', 'core_plugin', $repotype), 'updatepluginconfirmexternal');
+        }
+
+        $widget = $deployer->make_execution_widget($data['updateinfo']);
+        $output .= $this->output->render($widget);
+
+        $output .= $this->output->single_button($data['returnurl'], get_string('cancel', 'core'), 'get');
+
+        $output .= $this->container_end();
+        $output .= $this->footer();
+
+        return $output;
+    }
+
     /**
      * Display the admin notifications page.
      * @param int $maturity
@@ -278,22 +334,30 @@ class core_admin_renderer extends plugin_renderer_base {
     /**
      * Display the plugin management page (admin/plugins.php).
      *
+     * The filtering options array may contain following items:
+     *  bool contribonly - show only contributed extensions
+     *  bool updatesonly - show only plugins with an available update
+     *
      * @param plugin_manager $pluginman
      * @param available_update_checker $checker
+     * @param array $options filtering options
      * @return string HTML to output.
      */
-    public function plugin_management_page(plugin_manager $pluginman, available_update_checker $checker) {
+    public function plugin_management_page(plugin_manager $pluginman, available_update_checker $checker, array $options = array()) {
         global $CFG;
 
         $output = '';
 
         $output .= $this->header();
         $output .= $this->heading(get_string('pluginsoverview', 'core_admin'));
-        $output .= $this->plugins_overview_panel($pluginman);
+        $output .= $this->plugins_overview_panel($pluginman, $options);
 
         if (empty($CFG->disableupdatenotifications)) {
             $output .= $this->container_start('checkforupdates');
-            $output .= $this->single_button(new moodle_url($this->page->url, array('fetchremote' => 1)), get_string('checkforupdates', 'core_plugin'));
+            $output .= $this->single_button(
+                new moodle_url($this->page->url, array_merge($options, array('fetchremote' => 1))),
+                get_string('checkforupdates', 'core_plugin')
+            );
             if ($timefetched = $checker->get_last_timefetched()) {
                 $output .= $this->container(get_string('checkforupdateslast', 'core_plugin',
                     userdate($timefetched, get_string('strftimedatetime', 'core_langconfig'))));
@@ -301,7 +365,7 @@ class core_admin_renderer extends plugin_renderer_base {
             $output .= $this->container_end();
         }
 
-        $output .= $this->box($this->plugins_control_panel($pluginman), 'generalbox');
+        $output .= $this->box($this->plugins_control_panel($pluginman, $options), 'generalbox');
         $output .= $this->footer();
 
         return $output;
@@ -495,21 +559,39 @@ class core_admin_renderer extends plugin_renderer_base {
     }
 
     /**
-     * Displays the info about available Moodle updates
+     * Displays the info about available Moodle core and plugin updates
      *
-     * @param array|null $updates array of available_update_info objects or null
+     * The structure of the $updates param has changed since 2.4. It contains not only updates
+     * for the core itself, but also for all other installed plugins.
+     *
+     * @param array|null $updates array of (string)component => array of available_update_info objects or null
      * @param int|null $fetch timestamp of the most recent updates fetch or null (unknown)
      * @return string
      */
     protected function available_updates($updates, $fetch) {
 
         $updateinfo = $this->box_start('generalbox adminwarning availableupdatesinfo');
+        $someupdateavailable = false;
         if (is_array($updates)) {
-            $updateinfo .= $this->heading(get_string('updateavailable', 'core_admin'), 3);
-            foreach ($updates as $update) {
-                $updateinfo .= $this->moodle_available_update_info($update);
+            if (is_array($updates['core'])) {
+                $someupdateavailable = true;
+                $updateinfo .= $this->heading(get_string('updateavailable', 'core_admin'), 3);
+                foreach ($updates['core'] as $update) {
+                    $updateinfo .= $this->moodle_available_update_info($update);
+                }
             }
-        } else {
+            unset($updates['core']);
+            // If something has left in the $updates array now, it is updates for plugins.
+            if (!empty($updates)) {
+                $someupdateavailable = true;
+                $updateinfo .= $this->heading(get_string('updateavailableforplugin', 'core_admin'), 3);
+                $pluginsoverviewurl = new moodle_url('/admin/plugins.php', array('updatesonly' => 1));
+                $updateinfo .= $this->container(get_string('pluginsoverviewsee', 'core_admin',
+                    array('url' => $pluginsoverviewurl->out())));
+            }
+        }
+
+        if (!$someupdateavailable) {
             $now = time();
             if ($fetch and ($fetch <= $now) and ($now - $fetch < HOURSECS)) {
                 $updateinfo .= $this->heading(get_string('updateavailablenot', 'core_admin'), 3);
@@ -852,9 +934,10 @@ class core_admin_renderer extends plugin_renderer_base {
      * Prints an overview about the plugins - number of installed, number of extensions etc.
      *
      * @param plugin_manager $pluginman provides information about the plugins
+     * @param array $options filtering options
      * @return string as usually
      */
-    public function plugins_overview_panel(plugin_manager $pluginman) {
+    public function plugins_overview_panel(plugin_manager $pluginman, array $options = array()) {
         global $CFG;
 
         $plugininfo = $pluginman->get_plugins();
@@ -880,14 +963,49 @@ class core_admin_renderer extends plugin_renderer_base {
         }
 
         $info = array();
+        $filter = array();
+        $somefilteractive = false;
         $info[] = html_writer::tag('span', get_string('numtotal', 'core_plugin', $numtotal), array('class' => 'info total'));
         $info[] = html_writer::tag('span', get_string('numdisabled', 'core_plugin', $numdisabled), array('class' => 'info disabled'));
         $info[] = html_writer::tag('span', get_string('numextension', 'core_plugin', $numextension), array('class' => 'info extension'));
+        if ($numextension > 0) {
+            if (empty($options['contribonly'])) {
+                $filter[] = html_writer::link(
+                    new moodle_url($this->page->url, array('contribonly' => 1)),
+                    get_string('filtercontribonly', 'core_plugin'),
+                    array('class' => 'filter-item show-contribonly')
+                );
+            } else {
+                $filter[] = html_writer::tag('span', get_string('filtercontribonlyactive', 'core_plugin'),
+                    array('class' => 'filter-item active show-contribonly'));
+                $somefilteractive = true;
+            }
+        }
         if ($numupdatable > 0) {
             $info[] = html_writer::tag('span', get_string('numupdatable', 'core_plugin', $numupdatable), array('class' => 'info updatable'));
+            if (empty($options['updatesonly'])) {
+                $filter[] = html_writer::link(
+                    new moodle_url($this->page->url, array('updatesonly' => 1)),
+                    get_string('filterupdatesonly', 'core_plugin'),
+                    array('class' => 'filter-item show-updatesonly')
+                );
+            } else {
+                $filter[] = html_writer::tag('span', get_string('filterupdatesonlyactive', 'core_plugin'),
+                    array('class' => 'filter-item active show-updatesonly'));
+                $somefilteractive = true;
+            }
+        }
+        if ($somefilteractive) {
+            $filter[] = html_writer::link($this->page->url, get_string('filterall', 'core_plugin'), array('class' => 'filter-item show-all'));
         }
 
-        return $this->output->box(implode(html_writer::tag('span', ' ', array('class' => 'separator')), $info), '', 'plugins-overview-panel');
+        $output  = $this->output->box(implode(html_writer::tag('span', ' ', array('class' => 'separator')), $info), '', 'plugins-overview-panel');
+
+        if (!empty($filter)) {
+            $output .= $this->output->box(implode(html_writer::tag('span', ' ', array('class' => 'separator')), $filter), '', 'plugins-overview-filter');
+        }
+
+        return $output;
     }
 
     /**
@@ -896,13 +1014,43 @@ class core_admin_renderer extends plugin_renderer_base {
      * This default implementation renders all plugins into one big table.
      *
      * @param plugin_manager $pluginman provides information about the plugins.
+     * @param array $options filtering options
      * @return string HTML code
      */
-    public function plugins_control_panel(plugin_manager $pluginman) {
+    public function plugins_control_panel(plugin_manager $pluginman, array $options = array()) {
         global $CFG;
 
         $plugininfo = $pluginman->get_plugins();
 
+        // Filter the list of plugins according the options.
+        if (!empty($options['updatesonly'])) {
+            $updateable = array();
+            foreach ($plugininfo as $plugintype => $pluginnames) {
+                foreach ($pluginnames as $pluginname => $pluginfo) {
+                    if (!empty($pluginfo->availableupdates)) {
+                        foreach ($pluginfo->availableupdates as $pluginavailableupdate) {
+                            if ($pluginavailableupdate->version > $pluginfo->versiondisk) {
+                                $updateable[$plugintype][$pluginname] = $pluginfo;
+                            }
+                        }
+                    }
+                }
+            }
+            $plugininfo = $updateable;
+        }
+
+        if (!empty($options['contribonly'])) {
+            $contribs = array();
+            foreach ($plugininfo as $plugintype => $pluginnames) {
+                foreach ($pluginnames as $pluginname => $pluginfo) {
+                    if (!$pluginfo->is_standard()) {
+                        $contribs[$plugintype][$pluginname] = $pluginfo;
+                    }
+                }
+            }
+            $plugininfo = $contribs;
+        }
+
         if (empty($plugininfo)) {
             return '';
         }
@@ -973,12 +1121,10 @@ class core_admin_renderer extends plugin_renderer_base {
                     $availability = new html_table_cell('');
                 } else if ($isenabled) {
                     $row->attributes['class'] .= ' enabled';
-                    $icon = $this->output->pix_icon('i/hide', get_string('pluginenabled', 'core_plugin'));
-                    $availability = new html_table_cell($icon . ' ' . get_string('pluginenabled', 'core_plugin'));
+                    $availability = new html_table_cell(get_string('pluginenabled', 'core_plugin'));
                 } else {
                     $row->attributes['class'] .= ' disabled';
-                    $icon = $this->output->pix_icon('i/show', get_string('plugindisabled', 'core_plugin'));
-                    $availability = new html_table_cell($icon . ' ' . get_string('plugindisabled', 'core_plugin'));
+                    $availability = new html_table_cell(get_string('plugindisabled', 'core_plugin'));
                 }
 
                 $actions = array();
@@ -1058,6 +1204,18 @@ class core_admin_renderer extends plugin_renderer_base {
         $box  = $this->output->box_start($boxclasses);
         $box .= html_writer::tag('div', get_string('updateavailable', 'core_plugin', $updateinfo->version), array('class' => 'version'));
         $box .= $this->output->box(implode(html_writer::tag('span', ' ', array('class' => 'separator')), $info), '');
+
+        $deployer = available_update_deployer::instance();
+        if ($deployer->initialized()) {
+            $impediments = $deployer->deployment_impediments($updateinfo);
+            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'));
+            }
+        }
+
         $box .= $this->output->box_end();
 
         return $box;
index 363bfb1..b68a10a 100644 (file)
@@ -15,9 +15,10 @@ if ($hassiteconfig
 /// NOTE: these settings must be applied after all other settings because they depend on them
     ///main course settings
     $temp = new admin_settingpage('coursesettings', new lang_string('coursesettings'));
-    $courseformats = get_plugin_list('format');
+    require_once($CFG->dirroot.'/course/lib.php');
+    $courseformats = get_sorted_course_formats(true);
     $formcourseformats = array();
-    foreach ($courseformats as $courseformat => $courseformatdir) {
+    foreach ($courseformats as $courseformat) {
         $formcourseformats[$courseformat] = new lang_string('pluginname', "format_$courseformat");
     }
     $temp->add(new admin_setting_configselect('moodlecourse/format', new lang_string('format'), new lang_string('coursehelpformat'), 'weeks',$formcourseformats));
index 8d29028..b7fa57e 100644 (file)
@@ -20,6 +20,15 @@ if ($hassiteconfig) {
     // hidden script for converting journals to online assignments (or something like that) linked from elsewhere
     $ADMIN->add('modsettings', new admin_externalpage('oacleanup', 'Online Assignment Cleanup', $CFG->wwwroot.'/'.$CFG->admin.'/oacleanup.php', 'moodle/site:config', true));
 
+    // course formats
+    $ADMIN->add('modules', new admin_category('formatsettings', new lang_string('courseformats')));
+    $temp = new admin_settingpage('manageformats', new lang_string('manageformats', 'core_admin'));
+    $temp->add(new admin_setting_manageformats());
+    $ADMIN->add('formatsettings', $temp);
+    foreach ($allplugins['format'] as $format) {
+        $format->load_settings($ADMIN, 'formatsettings', $hassiteconfig);
+    }
+
     // blocks
     $ADMIN->add('modules', new admin_category('blocksettings', new lang_string('blocks')));
     $ADMIN->add('blocksettings', new admin_page_manageblocks());
@@ -303,6 +312,10 @@ if ($hassiteconfig) {
 
 // Question type settings
 if ($hassiteconfig || has_capability('moodle/question:config', $systemcontext)) {
+    if (!$hassiteconfig) {
+        require_once("$CFG->libdir/pluginlib.php");
+        $allplugins = plugin_manager::instance()->get_plugins();
+    }
     // Question behaviour settings.
     $ADMIN->add('modules', new admin_category('qbehavioursettings', new lang_string('questionbehaviours', 'admin')));
     $ADMIN->add('qbehavioursettings', new admin_page_manageqbehaviours());
index 0c8746e..3ba7201 100644 (file)
@@ -193,29 +193,6 @@ $temp->add(new admin_setting_configtext('curlcache', new lang_string('curlcache'
 
 $temp->add(new admin_setting_configtext('curltimeoutkbitrate', new lang_string('curltimeoutkbitrate', 'admin'),
                                         new lang_string('curltimeoutkbitrate_help', 'admin'), 56, PARAM_INT));
-/* //TODO: we need to fix code instead of relying on slow rcache, enable this once we have some code that is actually using it
-$temp->add(new admin_setting_special_selectsetup('cachetype', new lang_string('cachetype', 'admin'),
-                                          new lang_string('configcachetype', 'admin'), '',
-                                          array( '' => new lang_string('none'),
-                                                 'internal' => 'internal',
-                                                 'memcached' => 'memcached',
-                                                 'eaccelerator' => 'eaccelerator')));
-// NOTE: $CFG->rcache is forced to bool in lib/setup.php
-$temp->add(new admin_setting_special_selectsetup('rcache', new lang_string('rcache', 'admin'),
-                                          new lang_string('configrcache', 'admin'), 0,
-                                          array( '0' => new lang_string('no'),
-                                                 '1' => new lang_string('yes'))));
-$temp->add(new admin_setting_configtext('rcachettl', new lang_string('rcachettl', 'admin'),
-                                        new lang_string('configrcachettl', 'admin'), 10));
-$temp->add(new admin_setting_configtext('intcachemax', new lang_string('intcachemax', 'admin'),
-                                        new lang_string('configintcachemax', 'admin'), 10));
-$temp->add(new admin_setting_configtext('memcachedhosts', new lang_string('memcachedhosts', 'admin'),
-                                        new lang_string('configmemcachedhosts', 'admin'), ''));
-$temp->add(new admin_setting_configselect('memcachedpconn', new lang_string('memcachedpconn', 'admin'),
-                                          new lang_string('configmemcachedpconn', 'admin'), 0,
-                                          array( '0' => new lang_string('no'),
-                                                 '1' => new lang_string('yes'))));
-*/
 
 $ADMIN->add('server', $temp);
 
@@ -228,6 +205,10 @@ if (empty($CFG->disableupdatenotifications)) {
     $temp = new admin_settingpage('updatenotifications', new lang_string('updatenotifications', 'core_admin'));
     $temp->add(new admin_setting_configcheckbox('updateautocheck', new lang_string('updateautocheck', 'core_admin'),
                                                 new lang_string('updateautocheck_desc', 'core_admin'), 1));
+    if (empty($CFG->disableupdateautodeploy)) {
+        $temp->add(new admin_setting_configcheckbox('updateautodeploy', new lang_string('updateautodeploy', 'core_admin'),
+                                                    new lang_string('updateautodeploy_desc', 'core_admin'), 0));
+    }
     $temp->add(new admin_setting_configselect('updateminmaturity', new lang_string('updateminmaturity', 'core_admin'),
                                               new lang_string('updateminmaturity_desc', 'core_admin'), MATURITY_STABLE,
                                               array(
index 5abb3b0..97f1abb 100644 (file)
         } else {
             $columndir = $dir == "ASC" ? "DESC":"ASC";
             if ($column == "lastaccess") {
-                $columnicon = $dir == "ASC" ? "up":"down";
+                $columnicon = ($dir == "ASC") ? "sort_desc" : "sort_asc";
             } else {
-                $columnicon = $dir == "ASC" ? "down":"up";
+                $columnicon = ($dir == "ASC") ? "sort_asc" : "sort_desc";
             }
-            $columnicon = " <img src=\"" . $OUTPUT->pix_url('t/' . $columnicon) . "\" alt=\"\" />";
+            $columnicon = "<img class='iconsort' src=\"" . $OUTPUT->pix_url('t/' . $columnicon) . "\" alt=\"\" />";
 
         }
         $$column = "<a href=\"user.php?sort=$column&amp;dir=$columndir\">".$string[$column]."</a>$columnicon";
index ce84377..915d247 100644 (file)
@@ -3,7 +3,7 @@
 /**
  * @author Martin Dougiamas
  * @author Jerome GUTIERREZ
- * @author Iaki Arenaza
+ * @author Iñaki Arenaza
  * @license http://www.gnu.org/copyleft/gpl.html GNU Public License
  * @package moodle multiauth
  *
@@ -206,6 +206,10 @@ class auth_plugin_cas extends auth_plugin_ldap {
             }
         }
 
+        if (!ldap_paged_results_supported($this->config->ldap_version)) {
+            echo $OUTPUT->notification(get_string('pagedresultsnotsupp', 'auth_ldap'));
+        }
+
         include($CFG->dirroot.'/auth/cas/config.html');
     }
 
@@ -279,6 +283,9 @@ class auth_plugin_cas extends auth_plugin_ldap {
         if (empty($config->ldapencoding)) {
             $config->ldapencoding = 'utf-8';
         }
+        if (!isset($config->pagesize)) {
+            $config->pagesize = LDAP_DEFAULT_PAGESIZE;
+        }
         if (!isset($config->contexts)) {
             $config->contexts = '';
         }
@@ -339,6 +346,7 @@ class auth_plugin_cas extends auth_plugin_ldap {
         // save LDAP settings
         set_config('host_url', trim($config->host_url), $this->pluginconfig);
         set_config('ldapencoding', trim($config->ldapencoding), $this->pluginconfig);
+        set_config('pagesize', (int)trim($config->pagesize), $this->pluginconfig);
         set_config('contexts', trim($config->contexts), $this->pluginconfig);
         set_config('user_type', textlib::strtolower(trim($config->user_type)), $this->pluginconfig);
         set_config('user_attribute', textlib::strtolower(trim($config->user_attribute)), $this->pluginconfig);
index 031df6e..0cb7c27 100644 (file)
@@ -44,6 +44,9 @@ if (!isset($config->host_url)) {
 if (empty($config->ldapencoding)) {
     $config->ldapencoding = 'utf-8';
 }
+if (!isset($config->pagesize)) {
+    $config->pagesize = LDAP_DEFAULT_PAGESIZE;
+}
 if (!isset($config->contexts)) {
     $config->contexts = '';
 }
@@ -258,6 +261,25 @@ $yesno = array( get_string('no'), get_string('yes') );
         <?php print_string('auth_ldap_ldap_encoding', 'auth_ldap') ?>
     </td>
 </tr>
+<tr valign="top">
+    <td align="right">
+        <label for="pagesize"><?php print_string('pagesize_key', 'auth_ldap') ?></label>
+    </td>
+    <td>
+        <?php $disabled = (!ldap_paged_results_supported($config->ldap_version)) ? ' disabled="disabled"' : '' ; ?>
+        <input id="pagesize" name="pagesize" type="text" value="<?php echo $config->pagesize ?>" <?php echo $disabled ?>/>
+        <?php
+            if (isset($err['pagesize'])) { echo $OUTPUT->error_text($err['pagesize']); }
+            if ($disabled) {
+                // Don't loose the page size value (disabled fields are not submitted!)
+        ?>
+            <input id="pagesize" name="pagesize" type="hidden" value="<?php echo $config->pagesize ?>" />
+        <?php } ?>
+    </td>
+    <td>
+        <?php print_string('pagesize', 'auth_ldap') ?>
+    </td>
+</tr>
 <tr>
     <td colspan="2">
         <h4><?php print_string('auth_ldap_bind_settings', 'auth_ldap') ?></h4>
index 1de46a5..e603db8 100644 (file)
@@ -27,6 +27,6 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2012061700;        // The current plugin version (Date: YYYYMMDDXX)
+$plugin->version   = 2012110700;        // The current plugin version (Date: YYYYMMDDXX)
 $plugin->requires  = 2012061700;        // Requires this Moodle version
 $plugin->component = 'auth_cas';        // Full name of the plugin (used for diagnostics)
index a90a41b..fed0bae 100644 (file)
@@ -2,7 +2,7 @@
 
 /**
  * @author Martin Dougiamas
- * @author Iaki Arenaza
+ * @author Iñaki Arenaza
  * @license http://www.gnu.org/copyleft/gpl.html GNU Public License
  * @package moodle multiauth
  *
@@ -214,6 +214,7 @@ class auth_plugin_ldap extends auth_plugin_base {
 
         $ldapconnection = $this->ldap_connect();
         if(!($user_dn = $this->ldap_find_userdn($ldapconnection, $extusername))) {
+            $this->ldap_close();
             return false;
         }
 
@@ -231,11 +232,13 @@ class auth_plugin_ldap extends auth_plugin_base {
         }
 
         if (!$user_info_result = ldap_read($ldapconnection, $user_dn, '(objectClass=*)', $search_attribs)) {
+            $this->ldap_close();
             return false; // error!
         }
 
         $user_entry = ldap_get_entries_moodle($ldapconnection, $user_info_result);
         if (empty($user_entry)) {
+            $this->ldap_close();
             return false; // entry not found
         }
 
@@ -647,39 +650,50 @@ class auth_plugin_ldap extends auth_plugin_base {
         $contexts = explode(';', $this->config->contexts);
 
         if (!empty($this->config->create_context)) {
-              array_push($contexts, $this->config->create_context);
+            array_push($contexts, $this->config->create_context);
         }
 
-        $fresult = array();
+        $ldap_pagedresults = ldap_paged_results_supported($this->config->ldap_version);
+        $ldap_cookie = '';
         foreach ($contexts as $context) {
             $context = trim($context);
             if (empty($context)) {
                 continue;
             }
-            if ($this->config->search_sub) {
-                //use ldap_search to find first user from subtree
-                $ldap_result = ldap_search($ldapconnection, $context,
-                                           $filter,
-                                           array($this->config->user_attribute));
-            } else {
-                //search only in this context
-                $ldap_result = ldap_list($ldapconnection, $context,
-                                         $filter,
-                                         array($this->config->user_attribute));
-            }
 
-            if(!$ldap_result) {
-                continue;
-            }
+            do {
+                if ($ldap_pagedresults) {
+                    ldap_control_paged_result($ldapconnection, $this->config->pagesize, true, $ldap_cookie);
+                }
+                if ($this->config->search_sub) {
+                    // Use ldap_search to find first user from subtree.
+                    $ldap_result = ldap_search($ldapconnection, $context, $filter, array($this->config->user_attribute));
+                } else {
+                    // Search only in this context.
+                    $ldap_result = ldap_list($ldapconnection, $context, $filter, array($this->config->user_attribute));
+                }
+                if(!$ldap_result) {
+                    continue;
+                }
+                if ($ldap_pagedresults) {
+                    ldap_control_paged_result_response($ldapconnection, $ldap_result, $ldap_cookie);
+                }
+                if ($entry = @ldap_first_entry($ldapconnection, $ldap_result)) {
+                    do {
+                        $value = ldap_get_values_len($ldapconnection, $entry, $this->config->user_attribute);
+                        $value = textlib::convert($value[0], $this->config->ldapencoding, 'utf-8');
+                        $this->ldap_bulk_insert($value);
+                    } while ($entry = ldap_next_entry($ldapconnection, $entry));
+                }
+                unset($ldap_result); // Free mem.
+            } while ($ldap_pagedresults && !empty($ldap_cookie));
+        }
 
-            if ($entry = @ldap_first_entry($ldapconnection, $ldap_result)) {
-                do {
-                    $value = ldap_get_values_len($ldapconnection, $entry, $this->config->user_attribute);
-                    $value = textlib::convert($value[0], $this->config->ldapencoding, 'utf-8');
-                    $this->ldap_bulk_insert($value);
-                } while ($entry = ldap_next_entry($ldapconnection, $entry));
-            }
-            unset($ldap_result); // free mem
+        // If LDAP paged results were used, the current connection must be completely
+        // closed and a new one created, to work without paged results from here on.
+        if ($ldap_pagedresults) {
+            $this->ldap_close(true);
+            $ldapconnection = $this->ldap_connect();
         }
 
         /// preserve our user database
@@ -1411,42 +1425,46 @@ class auth_plugin_ldap extends auth_plugin_base {
 
         $contexts = explode(';', $this->config->contexts);
         if (!empty($this->config->create_context)) {
-              array_push($contexts, $this->config->create_context);
+            array_push($contexts, $this->config->create_context);
         }
 
+        $ldap_pagedresults = ldap_paged_results_supported($this->config->ldap_version);
         foreach ($contexts as $context) {
             $context = trim($context);
             if (empty($context)) {
                 continue;
             }
 
-            if ($this->config->search_sub) {
-                // Use ldap_search to find first user from subtree
-                $ldap_result = ldap_search($ldapconnection, $context,
-                                           $filter,
-                                           array($this->config->user_attribute));
-            } else {
-                // Search only in this context
-                $ldap_result = ldap_list($ldapconnection, $context,
-                                         $filter,
-                                         array($this->config->user_attribute));
-            }
-
-            if(!$ldap_result) {
-                continue;
-            }
-
-            $users = ldap_get_entries_moodle($ldapconnection, $ldap_result);
-
-            // Add found users to list
-            for ($i = 0; $i < count($users); $i++) {
-                $extuser = textlib::convert($users[$i][$this->config->user_attribute][0],
-                                             $this->config->ldapencoding, 'utf-8');
-                array_push($fresult, $extuser);
-            }
+            do {
+                if ($ldap_pagedresults) {
+                    ldap_control_paged_result($ldapconnection, $this->config->pagesize, true, $ldap_cookie);
+                }
+                if ($this->config->search_sub) {
+                    // Use ldap_search to find first user from subtree.
+                    $ldap_result = ldap_search($ldapconnection, $context, $filter, array($this->config->user_attribute));
+                } else {
+                    // Search only in this context.
+                    $ldap_result = ldap_list($ldapconnection, $context, $filter, array($this->config->user_attribute));
+                }
+                if(!$ldap_result) {
+                    continue;
+                }
+                if ($ldap_pagedresults) {
+                    ldap_control_paged_result_response($ldapconnection, $ldap_result, $ldap_cookie);
+                }
+                $users = ldap_get_entries_moodle($ldapconnection, $ldap_result);
+                // Add found users to list.
+                for ($i = 0; $i < count($users); $i++) {
+                    $extuser = textlib::convert($users[$i][$this->config->user_attribute][0],
+                                                $this->config->ldapencoding, 'utf-8');
+                    array_push($fresult, $extuser);
+                }
+                unset($ldap_result); // Free mem.
+            } while ($ldap_pagedresults && !empty($ldap_cookie));
         }
 
-        $this->ldap_close();
+        // If paged results were used, make sure the current connection is completely closed
+        $this->ldap_close($ldap_pagedresults);
         return $fresult;
     }
 
@@ -1693,6 +1711,10 @@ class auth_plugin_ldap extends auth_plugin_base {
             return;
         }
 
+        if (!ldap_paged_results_supported($this->config->ldap_version)) {
+            echo $OUTPUT->notification(get_string('pagedresultsnotsupp', 'auth_ldap'));
+        }
+
         include($CFG->dirroot.'/auth/ldap/config.html');
     }
 
@@ -1707,6 +1729,9 @@ class auth_plugin_ldap extends auth_plugin_base {
         if (empty($config->ldapencoding)) {
          $config->ldapencoding = 'utf-8';
         }
+        if (!isset($config->pagesize)) {
+            $config->pagesize = LDAP_DEFAULT_PAGESIZE;
+        }
         if (!isset($config->contexts)) {
              $config->contexts = '';
         }
@@ -1807,6 +1832,7 @@ class auth_plugin_ldap extends auth_plugin_base {
         // Save settings
         set_config('host_url', trim($config->host_url), $this->pluginconfig);
         set_config('ldapencoding', trim($config->ldapencoding), $this->pluginconfig);
+        set_config('pagesize', (int)trim($config->pagesize), $this->pluginconfig);
         set_config('contexts', $config->contexts, $this->pluginconfig);
         set_config('user_type', textlib::strtolower(trim($config->user_type)), $this->pluginconfig);
         set_config('user_attribute', textlib::strtolower(trim($config->user_attribute)), $this->pluginconfig);
@@ -2009,10 +2035,14 @@ class auth_plugin_ldap extends auth_plugin_base {
     /**
      * Disconnects from a LDAP server
      *
+     * @param force boolean Forces closing the real connection to the LDAP server, ignoring any
+     *                      cached connections. This is needed when we've used paged results
+     *                      and want to use normal results again.
      */
-    function ldap_close() {
+    function ldap_close($force=false) {
         $this->ldapconns--;
-        if($this->ldapconns == 0) {
+        if (($this->ldapconns == 0) || ($force)) {
+            $this->ldapconns = 0;
             @ldap_close($this->ldapconnection);
             unset($this->ldapconnection);
         }
index 3efe253..7112d4d 100644 (file)
@@ -7,6 +7,9 @@ if (!isset($config->host_url)) {
 if (empty($config->ldapencoding)) {
     $config->ldapencoding = 'utf-8';
 }
+if (!isset($config->pagesize)) {
+    $config->pagesize = LDAP_DEFAULT_PAGESIZE;
+}
 if (!isset($config->contexts)) {
     $config->contexts = '';
 }
@@ -148,6 +151,26 @@ $yesno = array(get_string('no'), get_string('yes'));
         <?php print_string('auth_ldap_ldap_encoding', 'auth_ldap') ?>
     </td>
 </tr>
+<tr valign="top">
+    <td align="right">
+        <label for="pagesize"><?php print_string('pagesize_key', 'auth_ldap') ?></label>
+    </td>
+    <td>
+        <?php $disabled = (!ldap_paged_results_supported($config->ldap_version)) ? ' disabled="disabled"' : '' ; ?>
+        <input id="pagesize" name="pagesize" type="text" value="<?php echo $config->pagesize ?>" <?php echo $disabled ?>/>
+        <?php
+            if (isset($err['pagesize'])) { echo $OUTPUT->error_text($err['pagesize']); }
+            if ($disabled) {
+                // Don't loose the page size value (disabled fields are not submitted!)
+        ?>
+            <input id="pagesize" name="pagesize" type="hidden" value="<?php echo $config->pagesize ?>" />
+        <?php } ?>
+
+    </td>
+    <td>
+        <?php print_string('pagesize', 'auth_ldap') ?>
+    </td>
+</tr>
 <tr>
     <td colspan="2">
         <h4><?php print_string('auth_ldap_bind_settings', 'auth_ldap') ?></h4>
index 848169a..7fa7db6 100644 (file)
@@ -128,6 +128,9 @@ $string['ntlmsso_attempting'] = 'Attempting Single Sign On via NTLM...';
 $string['ntlmsso_failed'] = 'Auto-login failed, try the normal login page...';
 $string['ntlmsso_isdisabled'] = 'NTLM SSO is disabled.';
 $string['ntlmsso_unknowntype'] = 'Unknown ntlmsso type!';
+$string['pagedresultsnotsupp'] = 'LDAP paged results not supported (either your PHP version lacks support or you have configured Moodle to use LDAP protocol version 2)';
+$string['pagesize'] = 'Make sure this value is smaller than your LDAP server result set size limit (the maximum number of entries that can be returned in a single query)';
+$string['pagesize_key'] = 'Page Size';
 $string['pluginname'] = 'LDAP server';
 $string['pluginnotenabled'] = 'Plugin not enabled!';
 $string['renamingnotallowed'] = 'User renaming not allowed in LDAP';
index 71a1d5a..e05dfde 100644 (file)
@@ -26,6 +26,6 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2012061700;        // The current plugin version (Date: YYYYMMDDXX)
+$plugin->version   = 2012110700;        // The current plugin version (Date: YYYYMMDDXX)
 $plugin->requires  = 2012061700;        // Requires this Moodle version
 $plugin->component = 'auth_ldap';       // Full name of the plugin (used for diagnostics)
index 46d7514..c3b47c6 100644 (file)
@@ -641,7 +641,8 @@ class moodle1_converter extends base_converter {
             return $files;
         }
         foreach ($matches[2] as $match) {
-            $files[] = str_replace(array('$@FILEPHP@$', '$@SLASH@$', '$@FORCEDOWNLOAD@$'), array('', '/', ''), $match);
+            $file = str_replace(array('$@FILEPHP@$', '$@SLASH@$', '$@FORCEDOWNLOAD@$'), array('', '/', ''), $match);
+            $files[] = urldecode($file);
         }
 
         return array_unique($files);
index a97720e..20aca62 100644 (file)
@@ -449,6 +449,19 @@ as it is parsed from the backup file. <br /><br /><img border="0" width="110" vs
     <br /><a href=\'$@FILEPHP@$$@SLASH@$MANUAL.DOC$@FORCEDOWNLOAD@$\'>download manual</a><br />');
     }
 
+    public function test_referenced_files_urlencoded() {
+        // This test covers MDL-36204
+        $text = 'This is a text containing links to file.php
+as it is parsed from the backup file. <br /><br /><img border="0" width="110" vspace="0" hspace="0" height="92" title="News" alt="News" src="$@FILEPHP@$$@SLASH@$pics$@SLASH@$news.gif" /><a href="$@FILEPHP@$$@SLASH@$pics$@SLASH@$news.gif$@FORCEDOWNLOAD@$">no space</a><br />
+    <br /><a href=\'$@FILEPHP@$$@SLASH@$pics$@SLASH@$news%20with%20spaces.gif$@FORCEDOWNLOAD@$\'>with urlencoded spaces</a><br />';
+
+        $files = moodle1_converter::find_referenced_files($text);
+        $this->assertEquals(gettype($files), 'array');
+        $this->assertEquals(2, count($files));
+        $this->assertTrue(in_array('/pics/news.gif', $files));
+        $this->assertTrue(in_array('/pics/news with spaces.gif', $files));
+    }
+
     public function test_question_bank_conversion() {
         global $CFG;
 
similarity index 58%
rename from install/lang/en_fix/langconfig.php
rename to backup/moodle2/backup_local_plugin.class.php
index d563203..49086cb 100644 (file)
 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
 
 /**
- * Automatically generated strings for Moodle installer
+ * Defines backup_local_plugin class
  *
- * Do not edit this file manually! It contains just a subset of strings
- * needed during the very first steps of installation. This file was
- * generated automatically by export-installer.php (which is part of AMOS
- * {@link http://docs.moodle.org/dev/Languages/AMOS}) using the
- * list of strings defined in /install/stringnames.txt.
- *
- * @package   installer
- * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ * @package    core_backup
+ * @subpackage moodle2
+ * @category   backup
+ * @copyright  2011 onwards Eloy Lafuente (stronk7) {@link http://stronk7.com}
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
 
 defined('MOODLE_INTERNAL') || die();
 
-$string['thislanguage'] = 'English (fixes)';
+/**
+ * Class extending standard backup_plugin in order to implement some
+ * helper methods related with the local plugins
+ */
+abstract class backup_local_plugin extends backup_plugin {}
\ No newline at end of file
index d7a1f0a..e164ddf 100644 (file)
@@ -39,6 +39,7 @@ require_once($CFG->dirroot . '/backup/moodle2/backup_plugin.class.php');
 require_once($CFG->dirroot . '/backup/moodle2/backup_qtype_plugin.class.php');
 require_once($CFG->dirroot . '/backup/moodle2/backup_gradingform_plugin.class.php');
 require_once($CFG->dirroot . '/backup/moodle2/backup_format_plugin.class.php');
+require_once($CFG->dirroot . '/backup/moodle2/backup_local_plugin.class.php');
 require_once($CFG->dirroot . '/backup/moodle2/backup_theme_plugin.class.php');
 require_once($CFG->dirroot . '/backup/moodle2/backup_report_plugin.class.php');
 require_once($CFG->dirroot . '/backup/moodle2/backup_coursereport_plugin.class.php');
index 158b4a2..f2ba2af 100644 (file)
@@ -341,6 +341,9 @@ class backup_module_structure_step extends backup_structure_step {
         // many plagiarism plugins storing information about this course
         $this->add_plugin_structure('plagiarism', $module, true);
 
+        // attach local plugin structure to $module, multiple allowed
+        $this->add_plugin_structure('local', $module, true);
+
         // Define the tree
         $module->add_child($availinfo);
         $availinfo->add_child($availability);
@@ -386,6 +389,9 @@ class backup_section_structure_step extends backup_structure_step {
         // attach format plugin structure to $section element, only one allowed
         $this->add_plugin_structure('format', $section, false);
 
+        // attach local plugin structure to $section element, multiple allowed
+        $this->add_plugin_structure('local', $section, true);
+
         // Add nested elements for _availability table
         $avail = new backup_nested_element('availability', array('id'), array(
                 'sourcecmid', 'requiredcompletion', 'gradeitemid', 'grademin', 'grademax'));
@@ -475,6 +481,10 @@ class backup_course_structure_step extends backup_structure_step {
         // many plagiarism plugins storing information about this course
         $this->add_plugin_structure('plagiarism', $course, true);
 
+        // attach local plugin structure to $course element; multiple local plugins
+        // can save course data if required
+        $this->add_plugin_structure('local', $course, true);
+
         // Build the tree
 
         $course->add_child($category);
@@ -902,7 +912,7 @@ class backup_gradebook_structure_step extends backup_structure_step {
         $grade_category   = new backup_nested_element('grade_category', array('id'), array(
                 //'courseid',
                 'parent', 'depth', 'path', 'fullname', 'aggregation', 'keephigh',
-                'dropload', 'aggregateonlygraded', 'aggregateoutcomes', 'aggregatesubcats',
+                'droplow', 'aggregateonlygraded', 'aggregateoutcomes', 'aggregatesubcats',
                 'timecreated', 'timemodified', 'hidden'));
 
         $letters = new backup_nested_element('grade_letters');
@@ -1802,6 +1812,9 @@ class backup_questions_structure_step extends backup_structure_step {
         // attach qtype plugin structure to $question element, only one allowed
         $this->add_plugin_structure('qtype', $question, false);
 
+        // attach local plugin stucture to $question element, multiple allowed
+        $this->add_plugin_structure('local', $question, true);
+
         $qhints = new backup_nested_element('question_hints');
 
         $qhint = new backup_nested_element('question_hint', array('id'), array(
@@ -1921,12 +1934,18 @@ class backup_activity_grading_structure_step extends backup_structure_step {
         // Build the tree including the method specific structures
         // (beware - the order of how gradingform plugins structures are attached is important)
         $areas->add_child($area);
+        // attach local plugin stucture to $area element, multiple allowed
+        $this->add_plugin_structure('local', $area, true);
         $area->add_child($definitions);
         $definitions->add_child($definition);
         $this->add_plugin_structure('gradingform', $definition, true);
+        // attach local plugin stucture to $definition element, multiple allowed
+        $this->add_plugin_structure('local', $definition, true);
         $definition->add_child($instances);
         $instances->add_child($instance);
         $this->add_plugin_structure('gradingform', $instance, false);
+        // attach local plugin stucture to $instance element, multiple allowed
+        $this->add_plugin_structure('local', $instance, true);
 
         // Define data sources
 
diff --git a/backup/moodle2/restore_local_plugin.class.php b/backup/moodle2/restore_local_plugin.class.php
new file mode 100644 (file)
index 0000000..53a23da
--- /dev/null
@@ -0,0 +1,34 @@
+<?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/>.
+
+/**
+ * Defines restore_local_plugin class
+ *
+ * @package    core_backup
+ * @subpackage moodle2
+ * @category   backup
+ * @copyright  2011 onwards Eloy Lafuente (stronk7) {@link http://stronk7.com}
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+defined('MOODLE_INTERNAL') || die();
+
+/**
+ * Class extending standard restore_plugin in order to implement some
+ * helper methods related with local plugins
+ */
+abstract class restore_local_plugin extends restore_plugin {}
\ No newline at end of file
index 6b80a41..455c03b 100644 (file)
@@ -44,7 +44,7 @@ abstract class restore_plagiarism_plugin extends restore_plugin {
         require_once($CFG->libdir . '/plagiarismlib.php');
         $enabledplugins = plagiarism_load_available_plugins();
         if (!array_key_exists($this->pluginname, $enabledplugins)) {
-            return;
+            return array();
         }
         return parent::define_plugin_structure($connectionpoint);
     }
index faf4a12..04a91d7 100644 (file)
@@ -37,6 +37,7 @@ require_once($CFG->dirroot . '/backup/moodle2/restore_default_block_task.class.p
 require_once($CFG->dirroot . '/backup/moodle2/restore_plugin.class.php');
 require_once($CFG->dirroot . '/backup/moodle2/restore_qtype_plugin.class.php');
 require_once($CFG->dirroot . '/backup/moodle2/restore_format_plugin.class.php');
+require_once($CFG->dirroot . '/backup/moodle2/restore_local_plugin.class.php');
 require_once($CFG->dirroot . '/backup/moodle2/restore_theme_plugin.class.php');
 require_once($CFG->dirroot . '/backup/moodle2/restore_report_plugin.class.php');
 require_once($CFG->dirroot . '/backup/moodle2/restore_coursereport_plugin.class.php');
@@ -45,6 +46,7 @@ require_once($CFG->dirroot . '/backup/moodle2/restore_gradingform_plugin.class.p
 require_once($CFG->dirroot . '/backup/moodle2/backup_plugin.class.php');
 require_once($CFG->dirroot . '/backup/moodle2/backup_qtype_plugin.class.php');
 require_once($CFG->dirroot . '/backup/moodle2/backup_format_plugin.class.php');
+require_once($CFG->dirroot . '/backup/moodle2/backup_local_plugin.class.php');
 require_once($CFG->dirroot . '/backup/moodle2/backup_theme_plugin.class.php');
 require_once($CFG->dirroot . '/backup/moodle2/backup_report_plugin.class.php');
 require_once($CFG->dirroot . '/backup/moodle2/backup_coursereport_plugin.class.php');
index 0a42f09..af81bfa 100644 (file)
@@ -1105,6 +1105,9 @@ class restore_section_structure_step extends restore_structure_step {
         // Apply for 'format' plugins optional paths at section level
         $this->add_plugin_structure('format', $section);
 
+        // Apply for 'local' plugins optional paths at section level
+        $this->add_plugin_structure('local', $section);
+
         return $paths;
     }
 
@@ -1329,6 +1332,9 @@ class restore_course_structure_step extends restore_structure_step {
         // Apply for plagiarism plugins optional paths at course level
         $this->add_plugin_structure('plagiarism', $course);
 
+        // Apply for local plugins optional paths at course level
+        $this->add_plugin_structure('local', $course);
+
         return array($course, $category, $tag, $allowed_module);
     }
 
@@ -2319,17 +2325,25 @@ class restore_activity_grading_structure_step extends restore_structure_step {
         $paths = array();
         $userinfo = $this->get_setting_value('userinfo');
 
-        $paths[] = new restore_path_element('grading_area', '/areas/area');
+        $area = new restore_path_element('grading_area', '/areas/area');
+        $paths[] = $area;
+        // attach local plugin stucture to $area element
+        $this->add_plugin_structure('local', $area);
 
         $definition = new restore_path_element('grading_definition', '/areas/area/definitions/definition');
         $paths[] = $definition;
         $this->add_plugin_structure('gradingform', $definition);
+        // attach local plugin stucture to $definition element
+        $this->add_plugin_structure('local', $definition);
+
 
         if ($userinfo) {
             $instance = new restore_path_element('grading_instance',
                 '/areas/area/definitions/definition/instances/instance');
             $paths[] = $instance;
             $this->add_plugin_structure('gradingform', $instance);
+            // attach local plugin stucture to $intance element
+            $this->add_plugin_structure('local', $instance);
         }
 
         return $paths;
@@ -2692,6 +2706,9 @@ class restore_module_structure_step extends restore_structure_step {
         // Apply for 'plagiarism' plugins optional paths at module level
         $this->add_plugin_structure('plagiarism', $module);
 
+        // Apply for 'local' plugins optional paths at module level
+        $this->add_plugin_structure('local', $module);
+
         return $paths;
     }
 
@@ -2988,6 +3005,9 @@ class restore_create_categories_and_questions extends restore_structure_step {
         // Apply for 'qtype' plugins optional paths at question level
         $this->add_plugin_structure('qtype', $question);
 
+        // Apply for 'local' plugins optional paths at question level
+        $this->add_plugin_structure('local', $question);
+
         return array($category, $question, $hint);
     }
 
index 2aa2578..7383658 100644 (file)
@@ -53,10 +53,10 @@ class block_activity_modules extends block_list {
 
         foreach ($modfullnames as $modname => $modfullname) {
             if ($modname === 'resources') {
-                $icon = $OUTPUT->pix_icon(file_extension_icon('.htm'), '', 'moodle', array('class' => 'icon')). '&nbsp;';
+                $icon = $OUTPUT->pix_icon('icon', '', 'mod_page', array('class' => 'icon'));
                 $this->content->items[] = '<a href="'.$CFG->wwwroot.'/course/resources.php?id='.$course->id.'">'.$icon.$modfullname.'</a>';
             } else {
-                $icon = '<img src="'.$OUTPUT->pix_url('icon', $modname) . '" class="icon" alt="" />&nbsp;';
+                $icon = '<img src="'.$OUTPUT->pix_url('icon', $modname) . '" class="icon" alt="" />';
                 $this->content->items[] = '<a href="'.$CFG->wwwroot.'/mod/'.$modname.'/index.php?id='.$course->id.'">'.$icon.$modfullname.'</a>';
             }
         }
@@ -64,6 +64,17 @@ class block_activity_modules extends block_list {
         return $this->content;
     }
 
+    /**
+     * Returns the role that best describes this blocks contents.
+     *
+     * This returns 'navigation' as the blocks contents is a list of links to activities and resources.
+     *
+     * @return string 'navigation'
+     */
+    public function get_aria_role() {
+        return 'navigation';
+    }
+
     function applicable_formats() {
         return array('all' => true, 'mod' => false, 'my' => false, 'admin' => false,
                      'tag' => false);
index de6bbb8..b8b982f 100644 (file)
@@ -26,16 +26,6 @@ defined('MOODLE_INTERNAL') || die();
 
 $capabilities = array(
 
-    'block/activity_modules:myaddinstance' => array(
-        'captype' => 'write',
-        'contextlevel' => CONTEXT_SYSTEM,
-        'archetypes' => array(
-            'user' => CAP_ALLOW
-        ),
-
-        'clonepermissionsfrom' => 'moodle/my:manageblocks'
-    ),
-
     'block/activity_modules:addinstance' => array(
         'riskbitmask' => RISK_SPAM | RISK_XSS,
 
index b4d4cfe..f9dc776 100644 (file)
@@ -24,5 +24,4 @@
  */
 
 $string['activity_modules:addinstance'] = 'Add a new activities block';
-$string['activity_modules:myaddinstance'] = 'Add a new activities block to the My Moodle page';
 $string['pluginname'] = 'Activities';
index 3209219..e57ecd0 100644 (file)
@@ -25,6 +25,6 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2012091600;        // The current plugin version (Date: YYYYMMDDXX)
+$plugin->version   = 2012110800;        // The current plugin version (Date: YYYYMMDDXX)
 $plugin->requires  = 2012061700;        // Requires this Moodle version
 $plugin->component = 'block_activity_modules'; // Full name of the plugin (used for diagnostics)
index ddf8f22..84303c3 100644 (file)
@@ -126,6 +126,15 @@ class block_admin_bookmarks extends block_base {
 
         return $this->content;
     }
+
+    /**
+     * Returns the role that best describes the admin bookmarks block.
+     *
+     * @return string
+     */
+    public function get_aria_role() {
+        return 'navigation';
+    }
 }
 
 
index bdbe457..428792a 100644 (file)
@@ -112,4 +112,13 @@ class block_blog_menu extends block_base {
         // Return the content object
         return $this->content;
     }
+
+    /**
+     * Returns the role that best describes the blog menu block.
+     *
+     * @return string
+     */
+    public function get_aria_role() {
+        return 'navigation';
+    }
 }
index 059aeeb..8cbf9be 100644 (file)
@@ -26,16 +26,6 @@ defined('MOODLE_INTERNAL') || die();
 
 $capabilities = array(
 
-    'block/blog_menu:myaddinstance' => array(
-        'captype' => 'write',
-        'contextlevel' => CONTEXT_SYSTEM,
-        'archetypes' => array(
-            'user' => CAP_ALLOW
-        ),
-
-        'clonepermissionsfrom' => 'moodle/my:manageblocks'
-    ),
-
     'block/blog_menu:addinstance' => array(
         'riskbitmask' => RISK_SPAM | RISK_XSS,
 
index 60f08a2..d39550e 100644 (file)
@@ -24,5 +24,4 @@
  */
 
 $string['blog_menu:addinstance'] = 'Add a new blog menu block';
-$string['blog_menu:myaddinstance'] = 'Add a new blog menu block to the My Moodle page';
 $string['pluginname'] = 'Blog menu';
index 0b58ac8..5d8fe5e 100644 (file)
@@ -25,6 +25,6 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2012091600;        // The current plugin version (Date: YYYYMMDDXX)
+$plugin->version   = 2012110800;        // The current plugin version (Date: YYYYMMDDXX)
 $plugin->requires  = 2012061700;        // Requires this Moodle version
 $plugin->component = 'block_blog_menu'; // Full name of the plugin (used for diagnostics)
index 691ef27..c501ac7 100644 (file)
@@ -26,16 +26,6 @@ defined('MOODLE_INTERNAL') || die();
 
 $capabilities = array(
 
-    'block/blog_recent:myaddinstance' => array(
-        'captype' => 'write',
-        'contextlevel' => CONTEXT_SYSTEM,
-        'archetypes' => array(
-            'user' => CAP_ALLOW
-        ),
-
-        'clonepermissionsfrom' => 'moodle/my:manageblocks'
-    ),
-
     'block/blog_recent:addinstance' => array(
         'riskbitmask' => RISK_SPAM | RISK_XSS,
 
index fa1c8b8..2da369c 100644 (file)
@@ -24,7 +24,6 @@
  */
 
 $string['blog_recent:addinstance'] = 'Add a new recent blog entries block';
-$string['blog_recent:myaddinstance'] = 'Add a new recent blog entries block to the My Moodle page';
 $string['norecentblogentries'] = 'No recent entries';
 $string['numentriestodisplay'] = 'Number of recent entries to display';
 $string['pluginname'] = 'Recent blog entries';
index 9758711..3532962 100644 (file)
@@ -25,6 +25,6 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2012091600;        // The current plugin version (Date: YYYYMMDDXX)
+$plugin->version   = 2012110800;        // The current plugin version (Date: YYYYMMDDXX)
 $plugin->requires  = 2012061700;        // Requires this Moodle version
 $plugin->component = 'block_blog_recent'; // Full name of the plugin (used for diagnostics)
index ba81a71..a6f6007 100644 (file)
@@ -26,16 +26,6 @@ defined('MOODLE_INTERNAL') || die();
 
 $capabilities = array(
 
-    'block/blog_tags:myaddinstance' => array(
-        'captype' => 'write',
-        'contextlevel' => CONTEXT_SYSTEM,
-        'archetypes' => array(
-            'user' => CAP_ALLOW
-        ),
-
-        'clonepermissionsfrom' => 'moodle/my:manageblocks'
-    ),
-
     'block/blog_tags:addinstance' => array(
         'riskbitmask' => RISK_SPAM | RISK_XSS,
 
index cc3c25e..75bcb5f 100644 (file)
@@ -24,5 +24,4 @@
  */
 
 $string['blog_tags:addinstance'] = 'Add a new blog tags block';
-$string['blog_tags:myaddinstance'] = 'Add a new blog tags block to the My Moodle page';
 $string['pluginname'] = 'Blog tags';
index 237dd3e..32dcf82 100644 (file)
@@ -25,6 +25,6 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2012091600;        // The current plugin version (Date: YYYYMMDDXX)
+$plugin->version   = 2012110800;        // The current plugin version (Date: YYYYMMDDXX)
 $plugin->requires  = 2012061700;        // Requires this Moodle version
 $plugin->component = 'block_blog_tags'; // Full name of the plugin (used for diagnostics)
index c211342..3702f11 100644 (file)
@@ -72,7 +72,7 @@ class block_community extends block_list {
                     'class' => 'icon', 'alt' => get_string('addcourse', 'block_community')));
         $addcourseurl = new moodle_url('/blocks/community/communitycourse.php',
                         array('add' => true, 'courseid' => $this->page->course->id));
-        $searchlink = html_writer::tag('a', $icon . '&nbsp;' . get_string('addcourse', 'block_community'),
+        $searchlink = html_writer::tag('a', $icon . get_string('addcourse', 'block_community'),
                         array('href' => $addcourseurl->out(false)));
         $this->content->items[] = $searchlink;
 
index 39db549..540c49a 100644 (file)
@@ -23,7 +23,7 @@ class block_course_list extends block_list {
         $this->content->icons = array();
         $this->content->footer = '';
 
-        $icon  = '<img src="' . $OUTPUT->pix_url('i/course') . '" class="icon" alt="" />&nbsp;';
+        $icon  = '<img src="' . $OUTPUT->pix_url('i/course') . '" class="icon" alt="" />';
 
         $adminseesall = true;
         if (isset($CFG->block_course_list_adminview)) {
@@ -109,7 +109,7 @@ class block_course_list extends block_list {
             return;
         }
 
-        $icon = '<img src="'.$OUTPUT->pix_url('i/mnethost') . '" class="icon" alt="" />&nbsp;';
+        $icon = '<img src="'.$OUTPUT->pix_url('i/mnethost') . '" class="icon" alt="" />';
 
         // shortcut - the rest is only for logged in users!
         if (!isloggedin() || isguestuser()) {
@@ -142,6 +142,14 @@ class block_course_list extends block_list {
         return false;
     }
 
+    /**
+     * Returns the role that best describes the course list block.
+     *
+     * @return string
+     */
+    public function get_aria_role() {
+        return 'navigation';
+    }
 }
 
 
index 34a859d..6e56390 100644 (file)
@@ -532,10 +532,16 @@ M.core_dock.fixTitleOrientation = function(item, title, text) {
         'position' : 'relative',
         'fontSize' : fontsize,
         'width' : width,
-        'top' : width/2,
-        'right' : width/2 - height
+        'top' : width/2
     });
 
+    // Positioning is different when in RTL mode.
+    if (right_to_left()) {
+        title.setStyle('left', width/2 - height);
+    } else {
+        title.setStyle('right', width/2 - height);
+    }
+
     // Rotate the text
     title.setStyles({
         'transform' : transform,
@@ -831,7 +837,11 @@ M.core_dock.genericblock.prototype = {
 
         // Must set the image src seperatly of we get an error with XML strict headers
         var moveto = Y.Node.create('<input type="image" class="moveto customcommand requiresjs" alt="'+M.str.block.addtodock+'" title="'+M.str.block.addtodock+'" />');
-        moveto.setAttribute('src', M.util.image_url('t/block_to_dock', 'moodle'));
+        var icon = 't/block_to_dock';
+        if (right_to_left()) {
+            icon = 't/block_to_dock_rtl';
+        }
+        moveto.setAttribute('src', M.util.image_url(icon, 'moodle'));
         moveto.on('movetodock|click', this.move_to_dock, this, commands);
 
         var blockaction = node.one('.block_action');
@@ -897,7 +907,11 @@ M.core_dock.genericblock.prototype = {
 
         // Must set the image src seperatly of we get an error with XML strict headers
         var movetoimg = Y.Node.create('<img alt="'+M.str.block.undockitem+'" title="'+M.str.block.undockitem+'" />');
-        movetoimg.setAttribute('src', M.util.image_url('t/dock_to_block', 'moodle'));
+        var icon = 't/dock_to_block';
+        if (right_to_left()) {
+            icon = 't/dock_to_block_rtl';
+        }
+        movetoimg.setAttribute('src', M.util.image_url(icon, 'moodle'));
         var moveto = Y.Node.create('<a class="moveto customcommand requiresjs"></a>').append(movetoimg);
         if (location.href.match(/\?/)) {
             moveto.set('href', location.href+'&dock='+this.id);
@@ -922,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="" style="width:11px;height:11px;cursor:pointer;" /></span>');
+            var closeicon = Y.Node.create('<span class="hidepanelicon" tabindex="0"><img alt="" /></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}});
index 759f6d7..3dd660b 100644 (file)
@@ -26,16 +26,6 @@ defined('MOODLE_INTERNAL') || die();
 
 $capabilities = array(
 
-    'block/feedback:myaddinstance' => array(
-        'captype' => 'write',
-        'contextlevel' => CONTEXT_SYSTEM,
-        'archetypes' => array(
-            'user' => CAP_ALLOW
-        ),
-
-        'clonepermissionsfrom' => 'moodle/my:manageblocks'
-    ),
-
     'block/feedback:addinstance' => array(
         'riskbitmask' => RISK_SPAM | RISK_XSS,
 
index ab69613..45874f5 100644 (file)
@@ -25,6 +25,5 @@
 
 $string['feedback'] = 'Feedback';
 $string['feedback:addinstance'] = 'Add a new feedback block';
-$string['feedback:myaddinstance'] = 'Add a new feedback block to the My Moodle page';
 $string['missing_feedback_module'] = 'This blocks relies on the Feedback activity module, but that module is not present!';
 $string['pluginname'] = 'Feedback';
index dee2421..6b99b03 100644 (file)
@@ -25,6 +25,6 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2012091600;        // The current plugin version (Date: YYYYMMDDXX)
+$plugin->version   = 2012110800;        // The current plugin version (Date: YYYYMMDDXX)
 $plugin->requires  = 2012061700;        // Requires this Moodle version
 $plugin->component = 'block_feedback';  // Full name of the plugin (used for diagnostics)
index 0128f1b..916780d 100644 (file)
@@ -129,11 +129,6 @@ class block_glossary_random extends block_base {
         $course = $this->page->course;
         $modinfo = get_fast_modinfo($course);
         $glossaryid = $this->config->glossary;
-        $cm = $modinfo->instances['glossary'][$glossaryid];
-
-        if (!has_capability('mod/glossary:view', context_module::instance($cm->id))) {
-            return '';
-        }
 
&